Skip to content

Instantly share code, notes, and snippets.

View KatsuhiroMorishita's full-sized avatar

Katsuhiro Morishita KatsuhiroMorishita

View GitHub Profile
@KatsuhiroMorishita
KatsuhiroMorishita / matrix.vba
Last active April 4, 2023 13:52
VBAで行列計算を行う様々なコードを実装しました。足し算、引き算、掛け算、転置、単位行列作成、掃き出し法、逆行列、水平結合、疑似逆行列、行列式、型変換、セルからのデータ読み込みと書き出しです。個人的には、もうVBAを触りたくないので封印したい。笑
Function matrix_plus(m1, m2)
' 行列同士の足し算
ans = m1 ' 同じ大きさのオブジェクトを生成
For i = 0 To UBound(m1)
For j = 0 To UBound(m1(0))
ans(i)(j) = m1(i)(j) + m2(i)(j)
Next j
Next i
matrix_plus = ans
End Function
@KatsuhiroMorishita
KatsuhiroMorishita / excel2htmltable.py
Created August 24, 2017 03:49
Excelの表からhtmlのtableを作成するPythonのスクリプトです。縦に結合したセルがあっても大丈夫です。(横に結合したセルがあると対応できない)
# Excelの表からhtmlのtableを作成する
# memo: 体育大会の試合結果をWebに掲載するために作成した。
# author: Katsuhiro Morishita
# created: 2017-08-24
# lisence: MIT
import pandas as pd
import math
import re
@KatsuhiroMorishita
KatsuhiroMorishita / vitervi_test3.py
Last active August 21, 2021 14:06
ビタビアルゴリズムに基づくデジタルデータの符号化・復号のサンプルコードです。デジタルデータを符号化したい、復号したい場合にお使いください。main関数内のcircuitという関数の実装を変更すれば様々な符号化器を試せます。なお、現状では復号時にレジスタの全パターンを生成していますのでマイコンでは動作しないと思います。また、連続動作時の高速化の余地もたくさんありますが、軽くググった感じでは歴史のあるアルゴリズムの割にヒットしないので有用かと思います。学習用にどうぞ。
# ビタビアルゴリズムに基づくデジタルデータの符号化・復号のサンプルコードである。
# memo: 半端かもしれないが、クラス化した。
# 現状ではストリームデータには対応していないが、拡張は簡単だと思う。
# ref. http://www.mobile.ecei.tohoku.ac.jp/lecture/coding/coding_06.pdf
# author: Katsuhiro Morishita
# created: 2017-06-12
# lisence: MIT
import copy
import numpy as np
@KatsuhiroMorishita
KatsuhiroMorishita / マクスウェル分布のシミュレーション.ipynb
Created May 9, 2021 12:36
気体分子の速度分布はマクスウェル分布に従います。このプログラムでは、分子の衝突を繰り返して速度分布がどうなるか確認しています。物理が専門ではないので少し間違えているかもしれませんが・・・。
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@KatsuhiroMorishita
KatsuhiroMorishita / data_split.py
Last active March 27, 2019 18:53
機械学習用に、データをランダムに並べ替えた上で分割します。学習用のデータと検証用のデータを分ける際にご利用下さい。
# purpose: 機械学習用に、データをランダムに並べ替えた上で分割する
# author: Katsuhiro Morishita
# created: 2017-07-10
# license: MIT
import sys
import numpy as np
import pandas
argvs = sys.argv # コマンドライン引数を格納したリストの取得
if len(argvs) < 3:
@KatsuhiroMorishita
KatsuhiroMorishita / RTC_adjust_with_serial_monitor.ino
Created September 9, 2018 10:52
Arduinoに接続されたRTCの時刻をシリアルモニタで調整するサンプルプログラムです。ネット上に転がっているプログラムはビルドした時刻がセットされるものがほとんどですが、このプログラムはシリアルモニタを使って任意の日時にセットできます。デフォルトでは、Stalker v3.1に搭載されているDS1337を対象にしていますが、他のICでもほとんど改造せずに使えるはずです。
// Arduinoに接続されたRTCの時刻をシリアルモニタで調整するサンプルプログラム
// memo: デフォルトでは、Stalker v3.1に搭載されているDS1337を対象にしていますが、他のICでもほとんど改造せずに使えるはずです。
// author: Katsuhiro Morihsita
// created: 2018-09-07
// license: MIT
#include <DS1337.h>
// RTC関係
DS1337 RTC;

ここでは、機械学習の勉強会で使う環境の作り方について説明しています。 もしWindowsの作業途中でエラーが出てしまった場合はノート もご覧ください。

注意

Pythonはバージョン3.6.xの64 bit版をインストールして下さい。

Pythonとエディタのインストール for Windows

@KatsuhiroMorishita
KatsuhiroMorishita / tf_checker4python.py
Last active April 23, 2018 01:59
文字列やベクトルや行列を含む配列の一致を判定する関数です。Pythonで行った数値計算の試験の解答用に開発しました。
# 不定形のベクトルの一致を判定する
# 数値計算の試験の解答用に開発した。
# author: Katsuhiro Morishita
# created: 2018-02
# lisence: MIT
import numpy as np
import collections
def flatten(foo):
@KatsuhiroMorishita
KatsuhiroMorishita / blynk_queue_test.ino
Last active January 25, 2018 14:57
Blynkのnotifyは一度送信すると15秒ほど不感知となり、送信リクエストが失われます。 そこで、リクエストされたメッセージを取りこぼすことなく送信するためのクラスを作成しました。実際に利用する際はクラスを.cppファイルとしてご利用ください。なお、その場合は#include<Arduino.h>の追記が必要です。
/*************************
blynkのnotifyは一度送信すると10秒ほど不感知となり、送信リクエストが失われます。
そこで、リクエストされたメッセージを取りこぼすことなく送信するためのクラスを作成しました。
author: Katsuhiro Morishita
created: 2018-01-25
lisence: MIT
**************************/
#include <Blynk.h>
#include <BlynkSimpleStream.h>
@KatsuhiroMorishita
KatsuhiroMorishita / chatter_resistance.ino
Last active October 18, 2017 13:35
チャタリング対策のクラスを実装したLEDを光らせるサンプルコードです。複数のボタンを待ち時間なしでスキャンできます。delay()を使っていないので、複数のボタンを同時に押されても判定可能です。
// purpose: チャタリング対策のテスト
// 2016年に作った気がするが、その前だったかも。
// ボタンを押すと、ただLEDが光るサンプルコード。チャタリング対策用のクラスがみそ
// author: Katsuhiro Morishita
// created: 2017-10-18
// lisence: MIT
const int led1 = 4;
const int led2 = 5;
const int butt1 = 6;