プログラミング

C/C++/C#

C言語で複数の変数を返したい時

C言語では通常の関数の使い方ではreturnによって複数の変数を返すことはできない。こういう時はポインタを使えばうまくいく。 #include <stdio.h> void test(int a, int* p1,int *p2); voi...
プログラミング

ESP32でMCP23017を使う

MCP23017はI2Cで接続することができる。とりあえず動かすためには次のようなプログラムでいい。 このプログラムを使えば入力、内部プルアップで動作し、シリアル通信で結果が送られてくる。 #include <Wire.h> int DEV...
プログラミング

Arduino IDEでESP32を使うときに出たエラー

Arduino IDEでESP32を使ってるときにこんなエラーが出た rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_d...
C/C++/C#

C言語で漸化式を解く

漸化式とは前回計算した値を使い今の値を計算するような式である。今回は簡単な漸化式 \begin{align}a_n=a_{n-1}+b\end{align} の形をした漸化式をC言語で計算する。 ソース #include "stdio.h"...
プログラミング

零次ホールドのボード線図

零次ホールドの伝達関数は \begin{align}H(s)=\frac{1-e^{-sT}}{s}\end{align} \(T=0.1\)でボード線図を書くと次のようになる。 \(T\)を変化させるほどにゲインが下がる。これはサンプル&...
MATLAB/simulink

MATLABを使って零次ホールドを試す

matlabを使って零次ホールドを試す。対象のシステムは \begin{align}G=\frac{s}{1+s}\end{align} 零次ホールドは \begin{align}H=\dfrac{1-e^{-sT}}{s}\end{ali...
MATLAB/simulink

MATLABで楕円を書く

楕円の座標は \begin{align}x&=a \cos \theta\\y&=b \sin \theta\end{align} で計算できる。\(a=b\)の時、円になる。 a=2; b=5; theta=-2*pi:0.01:2*pi...
python

classを使って単層パーセプトロンを定義しORを実装する

これの続き。 単層パーセプトロンをclass定義して、動作確認にORを計算する。 import mylib NN1 = mylib.NN() NN1.w1 = 0.5 NN1.w2 = 0.5 NN1.b = -0.2 print(NN1....
python

単層パーセプトロンを使ってORを作る

単層パーセプトロンを使ってORを作る。ORは ABX000011101111 import mylib print(mylib.OR(0,0)) print(mylib.OR(0,1)) print(mylib.OR(1,0)) print...
MATLAB/simulink

MATLABで忘却係数付き逐次最小二乗法を実装する

忘却係数付き逐次最小二乗法の更新則は \begin{align}\hat{\theta}_{N} &= \hat{\theta}_{N-1} + \dfrac{P_{N-1} z_{N} }{\rho + z_{N}^{T} P_{N-1}...
MATLAB/simulink

インボリュート曲線を描く

歯車の設計にはインボリュート曲線が使われる。今回は基礎円とそこから延びるインボリュート曲線を描く。 インボリュート曲線とは円柱に巻き付けられた糸を撓ませることなく引き出した時、糸の先端がたどる軌跡を示す曲線を言う。 媒介変数を用いて \be...
python

単層パーセプトロンを使ってANDを作る

単層パーセプトロンを使ってANDを作る。ANDは ABX000010100111 となるような演算である。一方で単層パーセプトロンとはそれぞれの入力\(x\)に重み \( w \) を乗じて和をとったもので \begin{align}y=\...
C/C++/C#

C言語でFizz Buzz

これの続き。 #include<stdio.h> int main() { int i, N = 36; for (i = 1; i <= N; i++) { if ((i % 3 == 0) && (i % 5 == 0)) { prin...
MATLAB/simulink

MATLAB2021aにおけるfor文の計算速度

MATLABを使うときよく言われるのは「for文は遅い」だと思う。今回は2021aでその速度を調べた。 使用したソースコード N=100000000; A1=1:1:N; A2=1:1:N; B1=zeros(1,N); tic for i...
MATLAB/simulink

MATLABでFizz Buzz

Fizz Buzzとは ・3の倍数→Fizz ・5の倍数→Buzz ・15の倍数→Fizz Buzz つまり 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fi...
プログラミング

gitで直前のコミットを打ち消す

直前のコミットを打ち消すには git reset --hard HEAD^
C/C++/C#

if文で予期しないエラーを出さないために

定数比較するときif文を使う場合が多い。一般的なif文の構文は if (num == 3) { //処理 } である。もしこの文を書き間違え if (num = 3) { //処理 } としたとき、numの値に関係なく処理が行われてしまう。...
C/C++/C#

正多角形の外角の和と一つの角度の値を返すプログラムを作る

正多角形の内角の一つ分の大きさは \begin{align}\theta_{n} = \frac{180(n-2)}{n}\end{align} なので一つ分の外角は \begin{align}\theta_{n} = 180 -\frac...
C/C++/C#

正多角形の内角の和と一つの角度の値を返すプログラムを作る

正多角形の内角の和は \begin{align}\theta_o = 180(n-2)\end{align} 一つ分は \begin{align}\theta_{n} = \frac{180(n-2)}{n}\end{align} 大きくす...
MATLAB/simulink

離散システムのボード線図を書く

\begin{align}G=\frac{1}{s+1}\end{align} を離散化する。c2dで離散化すると伝達関数は \begin{align}G=\frac{0.00995}{z-0.99}\end{align} となる。離散シス...