フーリエ変換には角周波数を扱うものと周波数を扱うものがある。角周波数と周波数の間には角度と1回転という差があるのみ。よって、周波数に2πをかければ角周波数となる。
シミュレーションで実物を扱わなくても仕事ができる環境を目指す。つまり家に引きこもって外に出なくてもOKな世界。
【FatFs】車載外部ストレージ その129【SDカード直接制御⑫】
FatFsパーティション分け用のコード修正。 VolToPart配列を変更するだけ。 VolToPart配列で物理ドライブ1に4つのパーティションを認識できるように設定。 パーティション1~4。 パーティション0は自動検知でパーティション1相当になる。 パーティション分けの時のみ使用。
【FatFs】車載外部ストレージ その128【SDカード直接制御⑪】
FatFsでFAT32フォーマットを実施。 フォーマットOK。 WindowsでFAT32が認識されることを確認。 問題なく認識。 パーティション分けも試したくなった。 ダメもとで実施予定。
【FatFs】車載外部ストレージ その127【SDカード直接制御⑩】
SDカードをFatFsでフォーマットしてみる。 物理的に壊れることはない。はず。 RAMディスクに対してフォーマットしたことはある。 FatFs対話モードのコマンドは「fm」。 fm <ld#> [<fs type> [<au size> [<align> [<N fats> [<N root>]]]]]
【FatFs】車載外部ストレージ その126【SDカード直接制御⑨】
前回FatFsで作成したファイルの確認。 ファイル名:long_file_name_file_by_fatfs_to_sdcard.txt ファイルサイズ:20000byte 内容:'d'を連続で20000文字 Windows上でファイルの確認。 問題無くファイルを確認できた。
【FatFs】車載外部ストレージ その125【SDカード直接制御⑧】
FatFs WinシミュレーションでSDカードに直接制御する話。 「FatFsでファイル生成して書き込み、リスト表示、内容表示」してみた。 問題無く動作。 ファイル名OK。 ファイルサイズOK。 書き込まれた内容OK。 あとは、同じようにWindowsからもこのファイルが見えるかを確認する必要がある。
【FatFs】車載外部ストレージ その124【SDカード直接制御⑦】
「FatFsでSDカードのFAT認識」の続き。 FatFsでSDカード内のファイルリスト表示。 「fl 1:」 FatFsでSDカード内のファイル内容表示。 「fo 1 long_file_name_file_by_fatfs.txt」 「fd」 「fc」 共に問題無く処理できた。
【FatFs】車載外部ストレージ その123【SDカード直接制御⑥】
「FatFsでSDカードのFAT認識」を実施。 マウント「fi 1」及びvolume status「fs 1:」は読み出せた。 VolToPart配列の定義が反映され論理ドライブ1にSDカードが配置。 あとは実際に読み書きをしてみる。(理屈上は動くはず)
【FatFs】車載外部ストレージ その122【SDカード直接制御⑤】
FatFs内のVolToPart配列について説明。 マルチボリューム、マルチパーティション想定したパラメータ。 PARTITION構造体について説明。 物理ドライバ番号とパーティション番号が格納される。 これにより、論理ドライブ番号、物理ドライブ番号、パーティション番号が紐づけられる。
【FatFs】車載外部ストレージ その121【SDカード直接制御④】
OSから見たマウント解除方法説明。 CreateFileに「\\.\d」を指定すると論理ドライブのハンドルを取得できる。 DeviceIoControlに以下の制御コードを渡すことでOSの論理ドライブアクセスを禁止できる。 FSCTL_LOCK_VOLUME。 FSCTL_DISMOUNT_VOLUME。
【FatFs】車載外部ストレージ その120【SDカード直接制御③】
FatFs改造のソースコード差分提示。 次回から以下に注力する形で開設予定。 dismount_volume関数。 DeviceIoControlがポイントとなる。 main.cのVolToPart配列。 論理ドライブと物理ドライブ関連。
【FatFs】車載外部ストレージ その119【SDカード直接制御②】
FatFs改造方針。 DeviceIoControl関数を使用する。 余談として、ファイルアクセス以外にデバイスアクセスにもReadFile、WriteFileを使用する。 DeviceIoControlの制御コードにFileSystem関連のものがあるので、これでリムーバブルディスクの直接制御はできそう。
【FatFs】車載外部ストレージ その118【SDカード直接制御①】
Windows上からSDカード直接制御に意味があるのか?特にない。面白そうだからやる。 方針を提示。まずは改造。 その後、FatFs-Windows間で相互運用できるかを確認。 一応OS側で保護されているが、HDDにアクセスしないように気を付ける。リムーバブルディスクにしかアクセスできないはず。
【FatFs】車載外部ストレージ その117【SDカードディスクイメージ⑦】
Windows上でSDカードに作成されたテキストファイルを確認。 ファイルの存在を確認OK。 ファイルの内容を確認OK。 ディスク関連はブラックボックスのまま使用してしまうことが多いが、概念だけでも知っておくといろいろな確認手段が得られる。 今後の方針としてWindows上からSD直接制御。
【FatFs】車載外部ストレージ その116【SDカードディスクイメージ⑥】
LinuxでディスクイメージをSDカードへ書き込み。 ddコマンドで書き込み。 Windowsで確認前にLinuxでSDカード確認してみた。 ファイルが作成されていることを確認。 サイズが正しいことを確認。 ファイルの中身が正しいことを確認。 viで「:%!xxd」を実行するとバイナリモード。
【FatFs】車載外部ストレージ その115【SDカードディスクイメージ⑤】
FatFsで適当なテキストファイルを作成。 なんとなくやばそうだが、問題ない。たぶん。 事前にリスト確認。 「long_file_name_file_by_fatfs.txt」を作成。 リストでファイルが生成されていることを確認。 ファイルを読み出して書き込まれているデータが正しいことを確認。
【FatFs】車載外部ストレージ その114【SDカードディスクイメージ④】
Windowsで作成したテキストファイルの有無をFatFsで確認。 「long_file_name_file.txt」があることが確認。 サイズもあってる。 Windowsで作成したテキストファイルの中身をFatFsで確認。 「0123456789」の繰り替しのテキストファイルなことを確認。
【FatFs】車載外部ストレージ その113【SDカードディスクイメージ③】
ディスクイメージをWindows側に持ってきてFatFsシミュレータのプロジェクトフォルダへコピー。 PhysicalDrive2というファイル名はFatFsシミュレータがDisk2と認識するルールに則った名称。 FatFsシミュレータでディスクイメージ認識はOK。 fsコマンドで確認できた。
【FatFs】車載外部ストレージ その112【SDカードディスクイメージ②】
WindowsでSDカードをFATでフォーマット。 FAT12/FAT16/FAT32が選択できないのでFATを指定するのみ。 領域サイズで自動選択。 テキストファイルをSDカード内に作成。 LinuxでSDカードのディスクイメージ作成。 dfコマンドでデバイス確認。 ddコマンドでディスクイメージ作成。
【FatFs】車載外部ストレージ その111【SDカードディスクイメージ①】
SDイメージシミュレーションの手順説明。 その手順及び構成を図解。 ポイントはLinuxのddコマンドでSDカードのディスクイメージの吸い上げと書き戻し。 VMware Workstation PlayerとUbuntuが必要。 今回はWinodws PC前提だが他のLinux環境でも問題無い。
【FatFs】車載外部ストレージ その110【ファイル上シミュレーション⑰】
扱ったのはFAT32。 他にFAT12、FAT16があるが、違いはFAT領域のクラスタサイズとディレクトエントリ構造体。 基本的な追い方は一緒。 組み込み機器ではPCで出来て当たり前がとても困難。 「車輪の再発明」という揶揄が適切ではない状況の方が多い。 日ごろから「出来て当たり前」の仕組みを考えると吉。
【FatFs】車載外部ストレージ その109【ファイル上シミュレーション⑯】
フォルダの中のディレクトリエントリの構成を図解。 カレントディレクトリ、親ディレクトリ、LFN→SFNの構成。 ファイルの実体が配置されてるクラスタ確認。 ここの考え方は通常の「8.3形式」のファイルと同一。 該当クラスタのFAT領域に於けるクラスタチェーンを確認。
【FatFs】車載外部ストレージ その108【ファイル上シミュレーション⑮】
ディレクトリエントリが指し示すフォルダの中のデータはフォルダ内のディレクトリエントリ。 つまり入れ子になっている。 ルートディレクトリ以外のディレクトリは「.」と「..」の名称のディレクトリが存在。 「.」がカレントディレクトリ。 「..」が親ディレクトリ。 相対PATH用の仕様。
【FatFs】車載外部ストレージ その107【ファイル上シミュレーション⑭】
ロングファイルネームなフォルダやファイルのディレクトリエントリの関係性を確認。 LFNが先に現れ、最後にSFN。 VFAT未対応FileSystemはLFNをスキップしてSFNだけを参照している。 SFNにフォルダ内のディレクトリエントリの先頭クラスタが埋まっている。
【FatFs】車載外部ストレージ その106【ファイル上シミュレーション⑬】
ロングファイルネームなフォルダやファイルのディスクイメージ上で確認を試みる。 まずはルートディレクトリエントリから。 存在するファイルとフォルダが3つのはずだが、ディレクトリエントリとしては5つ存在。 5つのうち3つがロングファイルネーム仕様を満たす仕掛け。 ファイル名もasciiからUnicodeになってる。
【FatFs】車載外部ストレージ その105【ファイル上シミュレーション⑫】
FatFsのVFAT仕様確認方法。 とりえあず、ロングファイルネームなフォルダとファイルを作成してディスクイメージの中身を確認する方針。 FatFs対話モードでフォルダとファイルを作成。 「long_file_name_folder」作って、その中に「long_file_name_file.txt」を作成。
【FatFs】車載外部ストレージ その104【ファイル上シミュレーション⑪】
FATは基本「8.3形式」というファイル命名規則になっている。 ファイル名8文字、拡張子3文字。 VFAT仕様によりその制限を突破している。 VFAT未対応FileSystemからは「long_file_name.txt」が「long_f~1.txt」のような形で見える用にして互換性を確保している。
【FatFs】車載外部ストレージ その103【ファイル上シミュレーション⑩】
FAT領域の位置確認。 FAT領域参照。 FAT32の場合、32bit長データを1要素としてクラスタチェーンを表現している。 FAT16の場合は16bit長データを1要素としている。 基本的には該当クラスタがどのクラスタ番号に繋がるかの数値が埋まっている。 0x0fffffffがチェーン終端となる。
【FatFs】車載外部ストレージ その102【ファイル上シミュレーション⑨】
test.txtの内容のクラスタ位置を確認。 ファイルの中身を確認。 指定した7000[byte]のデータが並んでいたのを確認。 しかし、7000[byte]が並んでいるのたまたま。クラスタの空き方によっては並ぶ保証は無い。 FAT領域のクラスタチェーンでクラスタの関係性を表現している。
【FatFs】車載外部ストレージ その101【ファイル上シミュレーション⑧】
ルートディレクトリエントリを確認。 ディレクトリエントリが並んでおり、作成したtest.txt、test2.txtが存在。 ファイルの中身の情報はDIR_FstClusHIとDIR_FstClusLOで指定されたクラスタから特定。 BPB_RootClusでルートディレクトリエントリのクラスタ番号から特定する。
【FatFs】車載外部ストレージ その100【ファイル上シミュレーション⑦】
ルートディレクトリエントリを直接特定できるパラメータはない。 以下パラメータが必要。 PT_System、BPB_RsvdSecCnt、BPB_FATSz32、BPB_NumFATs。 MBR、BPB、予約領域、FAT領域を積み上げていくとルートディレクトリエントリの位置が分かる。
【FatFs】車載外部ストレージ その99【ファイル上シミュレーション⑥】
BPB(BIOS Parameter Block)のFAT32におけるオフセット36以降のフィールドの説明。 FAT12/16とFAT32で構成が違うが、ここではFAT32で説明。 重要パラメータはBPB_FATSz32、BPB_RootClus。 上記が分かるとルートディレクトリエントリの位置が分かる。
「ブログリーダー」を活用して、KEIさんをフォローしませんか?
フーリエ変換には角周波数を扱うものと周波数を扱うものがある。角周波数と周波数の間には角度と1回転という差があるのみ。よって、周波数に2πをかければ角周波数となる。
動画作成関連のバックナンバー用ページ。立ち絵を作ったり、動画作ったり、アイキャッチ画像作ったりなどを掲載していく。
MATLAB,Python,Scilab,Julia比較するシリーズの第4章。第4章では分類問題で最終的にはニューラルネットワークや最適化アルゴリズムの話だった。第5章はフーリエ解析学から高速フーリエの話がメインとなる。
立ち絵の配置: PSDファイルをAviUtlに配置し、画面サイズやフレームレートを設定。のっぺらぼう化: 目と口を消して、アニメーション効果を追加。アニメーション効果: 目パチと口パクの設定を行い、リップシンクを調整。
フーリエ変換を定義。フーリエの積分公式の一部を抜き出す。逆フーリエ変換を定義。フーリエの積分公式にフーリエ変換を代入するだけ。
Δωで刻みにしたので、極限を利用して連続系へ。数式上は連続ではあるが、一般的な表現ではない。区分求積法とリーマン積分について。フーリエの積分公式を導出した。
VOICEVOXとAivisSpeechキャラと一緒に!AviUtlを使った動画作成 バックナンバーはじめに以前、AivisSpeechのAnneliというキャラの立ち絵を作成した。さらにそこに加えて、AivisSpeechのアイコン画像を...
PSDToolKitプラグインの導入の仕方を説明。PSDファイルを探してGIMPで内容を確認。GIMPで瞬き用、口パク用のレイヤー編集。
フーリエに積分公式は複素フーリエ級数と複素フーリエ係数から導出する。周期2Lの波の数を示すnを周期2πに於ける波の数である角周波数ωに変換。角周波数ωの刻みであるΔωについて説明。Δωを定義することで、離散的な係数算出が連続的な角周波数算出に近づけていっている。
区分求積法とリーマン積分について。離散と連続の分け目。フーリエの積分公式を導出した。演算したはずなのに変化しない。つまり変換、逆変換が成立することを示している。
Δωで刻みにしたので、極限を利用して連続系へ。数式上は連続ではあるが、一般的な表現ではない。よって、一般的な表現に書き換える必要がある。
角周波数ωの刻みであるΔωについて説明。Δωを定義することで、離散的な係数算出が連続的な角周波数算出に近づけていっている。
周期2Lの波の数を示すnを周期2πに於ける波の数である角周波数ωに変換。ω=nπ/Lを使用して変換するだけ。これにより少し数式がシンプルになった。
VOICEVOXとAivisSpeechキャラと一緒に!AviUtlを使った動画作成 バックナンバーはじめに以前、AivisSpeechのAnneliというキャラの立ち絵を作成した。ほぼ独自に作成したが、Anneliの画像自体はAivisS...
フーリエに積分公式は複素フーリエ級数と複素フーリエ係数から導出する。変換を想定した式に変換。複素指数関数との積と積分、総和を経由すると元に関数に戻るというイメージが重要。
AviUtlのセットアップと拡張編集Pluginの導入を行った。mp4ファイルの入力と出力の方法を説明。アニメーションgifの対応方法を説明。
分数は割り算の別表現として理解しやすく、逆数を掛けることで計算が簡単になる。これにより、小数の掛け算や割り算の理解が深まる。一次関数の数式をグラフにすることや、グラフから数式を導くことは、データのトレンド分析や物理現象の理解に役立つ。微分は関数の変化率を求める手法であり、数値微分を使って近似的に求めることができる。これにより、物理学や経済学など多くの分野で応用可能。
Youtube動画やブログ記事のアイキャッチ用に作成した、VOCEIVX(四国めたん、ずんだもん、春日部つむぎ)、AivisSpeech(Anneli)の画像たち。Stable Diffusionで生成&少しペン入れ&GIMPによる補正したものになります。
各種フーリエについてまとめてみた。いままでは級数→係数の順番でやっていたため、逆フーリエ変換→フーリエ変換の順番が自然。実際には「フーリエの積分公式を求める」ことになるが、これは逆フーリエ変換そのものである。
各種フーリエについてまとめてみた。いままでは級数→係数の順番でやっていたため、逆フーリエ変換→フーリエ変換の順番が自然。実際には「フーリエの積分公式を求める」ことになるが、これは逆フーリエ変換そのものである。
最適化アルゴリズムを通常の勾配降下法からモーメンタムに変えた際の差分を確認。 モーメンタムの方が学習の収束が早い。 勾配降下法で500エポックのところ100エポック。 モーメンタムの場合、初期のパラメータ移動が大き目。 これにより、大域最適化を見つける可能性が高くなる。
最適化アルゴリズム モーメンタムを用いて分類の学習をJuliaで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をScilabで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をScilabで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をPythonで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をMATLABで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
モーメンタムを確認するプログラムの方針を確認。 以前の勾配降下法のプログラムをベースにする。 隠れ層のユニット数は4。 プログラムのフローを確認。 モーメンタム項とパラメータ更新が基本的な差分となる。
モーメンタムの更新式について確認。 指数移動平均を利用して直近の値を重視する。 モーメンタムの動作イメージについて確認。 最初は大きく更新して、最適解が近いと小さく更新。 勾配降下法で言うところの学習率が可変と同義な動きになる。
勾配降下法の更新式を確認。 勾配降下法の動作イメージを確認。 学習率が大きい場合と小さい場合で挙動が変わる。 ちょうど良い学習率を人間の手で探す。 これにより、一般的なパラメータとは異なるハイパーパラメータというカテゴリになる。
最適化アルゴリズムを取り扱う。 今回のネットワークだとさほど恩恵はないが知っていて損はない。 まずはモーメンタムから解説&実験をしていく。 最初は復習を兼ねて勾配降下法についても確認する。
モーメンタムを確認するプログラムの方針を確認。 以前の勾配降下法のプログラムをベースにする。 隠れ層のユニット数は4。 プログラムのフローを確認。 モーメンタム項とパラメータ更新が基本的な差分となる。
モーメンタムの動作イメージについて確認。 動作イメージの表現は難しい。 最初は大きく更新して、最適解が近いと小さく更新。 勾配降下法で言うところの学習率が可変と同義な動きになる。
モーメンタムの更新式について確認。 指数移動平均を利用して直近の値を重視する。 実際の指数移動平均とは異なっているので、その点は注意。
勾配降下法の動作イメージを確認。 学習率が大きい場合と小さい場合で挙動が変わる。 ちょうど良い学習率を人間の手で探す。 これにより、一般的なパラメータとは異なるハイパーパラメータというカテゴリになる。
今回改めてまじめに更新式を確認。 勾配降下法の更新式が一番シンプルなので今後の最適化アルゴリズムの更新式を見る際は比較対象になりやすい。
最適化アルゴリズムを取り扱う。 今回のネットワークだとさほど恩恵はないが知っていて損はない。 まずはモーメンタムから解説&実験をしてい 最初は復習を兼ねて勾配降下法についても確認する。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたJuliaコードで分類を実施。 大きく2パターンの分類パターンがある。 やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたScilabコードで分類を実施。 大きく2パターンの分類パターンがある。 やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたPythonコードで分類を実施。 大きく2パターンの分類パタ やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたMATLABコードで分類を実施。 大きく2パターンの分類パターン やや複雑な分類パターンが4ユニットにすることで出てきたもの。