6.5 アダマール(Hadamard)変換 (1)アダマール変換とは

Slides:



Advertisements
Similar presentations
情報通信システム( 2 ) 年 4 月 26 日 火曜日 午後 4 時 10 分~ 5 時 40 分 NTT-IT Corp. 加藤 洋一.
Advertisements

情報基礎実習 I (第6回) 木曜4・5限 担当:北川 晃. Stream クラスを用いたファイルの接続 … Dim インスタンス名 As New IO.StreamReader( _ “ ファイルの絶対パス ”, _ System.Text.Encoding.Default) … s = インスタンス名.
8.4 偏微分方程式の数値解 法 [偏微分の復習 (1)] のとき このこの と を 座標系の座標値とすると, と は独立。お互いに直交する値であるから, は意味がない。
5.制御構造と配列 場合分け( If Then Else , Select Case ) 繰返し( Do While ) 繰返しその2( For Next )
第10章 マイコン機器とマイコンプロ グラム ● マイコン回路とプログラミン グ ● サーボモータ,直流モータ制 御以外のプログラム マイコンでどのようなことができるのか? モータのマイコン制御を使いこなす!
基本情報技術概論 I 演習(第5回) 埼玉大学 理工学研究科 堀山 貴史
Fortran と有限差分法の 入門の入門の…
徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野
VBAを通して プログラム言語の基本構造を学ぶ
情報基礎実習I (第7回) 木曜4・5限 担当:北川 晃.
6.3 2次元DFT (1)2次元DFTとは 画像のような2次元信号をサンプリングしたデータを 2次元DFTを
VBA H106077 寺沢友宏.
Verilog HDL 12月21日(月).
情報基礎A 第13週 VBAプログラミング VBAの基本文法7・実際のデータ処理
情報基礎実習I (第5回) 木曜4・5限 担当:北川 晃.
情報基礎A 第10週 プログラミング入門 VBAの基本文法2 データ型・If ~Then~Else
情報基礎A 第7週 プログラミング入門 VBAの基本文法2 データ型・If ~Then~Else
条件式 (Conditional Expressions)
担当 : 山口 匡 伊藤 祐吾 (TA) 宮内 裕輔 (TA)
4.2.2 4to1セレクタ.
情報基礎A 第14週プログラミング 実際のデータ処理での応用(2)
4.2 連立非線形方程式 (1)繰返し法による方法
情報基礎A 第11週 プログラミング入門 VBAの基本文法3 配列・For~Next
6.4 コード最適化 (1)コード最適化(code optimization)
6.4 離散的コサイン変換 (DCT : discrete cosine transform ) (1)DCTとは
関数 関数とスタック.
テキストボックス、チェックボックス×2、コマンドボタンを配置する。 コマンドボタンに機能を与える
繰り返し計算 while文, for文.
実例で学ぶプログラミング VBAを用いて簡単なゲームを作ろう 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
東京工科大学 コンピュータサイエンス学部 亀田弘之
本時の目標 「簡単なプログラム言語の意味を理解し、マクロ機能を使って簡単なプログラムを作ることができる。」
確率・統計Ⅰ 第3回 確率変数の独立性 / 確率変数の平均 ここです! 確率論とは 確率変数、確率分布 確率変数の独立性 / 確率変数の平均
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
情報実習I (第6回) 木曜4・5限 担当:北川 晃.
地域情報学演習 VBAプログラミング 第2回 2017年10月17日
地域情報学演習 VBAプログラミング 第3回 2017年10月24日
情報実習I (第7回) 木曜4・5限 担当:北川 晃.
ディジタル信号処理 Digital Signal Processing
相関.
実践プログラミング入門2 配列を使ってゲームを作ろう 徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
第3章 演算装置.
すべてのレポートの提出期限 1月22日 火曜日 これ以降は特殊な理由が無い限り レポートを受け取りません!
「入力」はInputBoxやテキストボックスに限らず、 セルからのデータの入力や、チェックボックス等からの入力全てを含める。
4点FFT設計 ファイヤー和田 知久 琉球大学・工学部・情報工学科 教授
VBで始めるプログラミング 第三回 コードを書こう!! まきはた@ナーク ’04/05/21.
情報基礎Ⅱ (第5回) 月曜4限 担当:北川 晃.
再帰的手続き.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
プログラムの基本構造と 構造化チャート(PAD)
ディジタル回路 9. 演算回路 五島 正裕.
IF文 START もしも宝くじが当たったら 就職活動する 就職活動しない YES END NO.
第6回レポート解説 条件1 条件2 条件3 月の入力 月、日、曜日の表示 日の入力 曜日の入力
情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.
情報実習I (第6回) 木曜4・5限 担当:北川 晃.
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
アルゴリズムの視覚化 この図は左が大きく、 右が小さくなるようにソートしている  この図は左が大きく、  右が小さくなるようにソートしている
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
場合分け(If Then Else,Select Case) 繰返し(Do While) 繰返しその2(For Next)
情報処理Ⅱ 小テスト 2005年2月1日(火).
6.2 高速フーリエ変換 (1)FFT(fast Fourier transform)とは
共振を防ぐように設計を行ったり, 振動を早く減衰させる設計を行う際, 固有値と固有ベクトルを求めることが重要
7.2 回帰曲線 身長と体重…関係がありそう? ??? 身長と体重の関係をグラフで観察する.
コンピュータの高速化により, 即座に計算できるようになってきたが, 手法的にはコンピュータ出現以前に考え出された 方法が数多く使われている。
プログラミング言語によっては,複素数が使えない。
6.3 インタプリタ (1)インタプリタ(interpreter)とは
情報基礎A 第14週プログラミング 実際のデータ処理での応用(2)
5.2 グレゴリー・ニュートン(Gregory-Newton)の補間式 (1)導入
8.2 数値積分 (1)どんなときに数値積分を行うのか?
5.3 ラグランジェ(Lagrange)の補間式
8.数値微分・積分・微分方程式 工学的問題においては 解析的に微分値や積分値を求めたり, 微分方程式を解くことが難しいケースも多い。
Presentation transcript:

6.5 アダマール(Hadamard)変換 (1)アダマール変換とは 乗算を使わず加算と減算だけで実行できる直交変換 1896年,素数定理の証明で有名なフランス人 Jacques Salomon Hadamardの名前からこう呼ばれる。 日本では,符号理論の「アダマール変換の発案者として有名。 (注) 「Hadamard」はハダマルドと読みそうだが, フランス人の名前なので「アダマール」と読もう。 また,アダマール行列は, ウォルシュ(Walsh)関数を標本化したものとみなすことができるので, ウォルシュ・アダマール変換(WHT:Walsh Hadamard Transform)と 呼ばれることもある。

(2)変換のためのアダマール行列の定義 以下のように再帰的に定義される。 (例)

(3)符号変化の回数 符号変化の回数が少ない順に並べる行列を使用する。 (例) 波形としてCos波の変わりに 矩形波を使っていると考えることができる。

(4)アダマール変換の定義 次のような行列式として定義される。 逆アダマール変換

VBAでの記述 ①データ宣言とパルス信号の設定 (色々な信号を設定してみよう) VBAでの記述 ①データ宣言とパルス信号の設定 (色々な信号を設定してみよう) Private Const Num = 8 Private Const PI = 3.12159265358979 Private X(Num) As Double Private Y(Num) As Double Private Z(Num) As Double Private HMat(8, 8) As Double Private Sub パルス() For K = 0 To Num - 1 X(K) = -1 If K >= 3 And K <= 5 Then X(K) = 1 Next X(Num) = X(0) End Sub

VBAでの記述 ②結果設定とボタンのCLICKイベントハンドラ Private Sub 結果設定() With Worksheets("Sheet3") .Cells(1, 1) = "No.": .Cells(1, 2) = "X" .Cells(1, 3) = "Y": .Cells(1, 4) = "Z" For K = 0 To Num .Cells(K + 2, 1) = K: .Cells(K + 2, 2) = X(K) .Cells(K + 2, 3) = Y(K): .Cells(K + 2, 4) = Z(K) Next End With End Sub Sub Sheet3_ボタン1_Click() パルス set8HMAT HT IHT 結果設定

VBAでの記述 ③8行8列のアダマール行列設定(その1) Private Sub set8HMAT() For I = 0 To 7 HMat(0, I) = 1 Next V = 1 If I >= 4 Then V = -1 HMat(1, I) = V If I >= 2 And I <= 5 Then V = -1 HMat(2, I) = V If I = 2 Or I = 3 Or I = 6 Or I = 7 Then V = -1 HMat(3, I) = V

VBAでの記述 ④8行8列のアダマール行列設定(その2) For I = 0 To 7 V = 1 If I = 1 Or I = 2 Or I = 5 Or I = 6 Then V = -1 HMat(4, I) = V Next If I = 1 Or I = 2 Or I = 4 Or I = 7 Then V = -1 HMat(5, I) = V If I = 1 Or I = 3 Or I = 4 Or I = 6 Then V = -1 HMat(6, I) = V If (I Mod 2) <> 0 Then V = -1 HMat(7, I) = V End Sub

VBAでの記述 ⑤アダマール変換と逆アダマール変換 Private Sub HT() 'Hadamard変換 For I = 0 To Num - 1 Y(I) = 0 For J = 0 To Num - 1 Y(I) = Y(I) + HMat(I,J)* X(J) Next Y(Num) = Y(0) End Sub Private Sub IHT() '逆Hadamard変換 Z(I) = 0 Z(I) = Z(I) + HMat(I,J) *Y(J) Z(Num) = Z(0) For I = 0 To Num Z(I) = Z(I) / Num Hmat(I,J)は -1または1なので 加算と減算に 置き換えることができる。

(5)確認

(6)高速アダマール変換 FFTと同様,時間間引き等による高速HTが可能である。 g[0] g[4] g[2] g[6] g[1] g[5] 第1ステップ 第2ステップ 第3ステップ g[0] G[0] g[4] G[1] -1 G[2] g[2] -1 -1 g[6] G[3] -1 g[1] G[4] -1 -1 g[5] G[5] -1 -1 -1 g[3] G[6] -1 -1 g[7] G[7] -1

VBAでの記述 ①FHT(その1) (その他のプログラムはHTと同じ) VBAでの記述 ①FHT(その1) (その他のプログラムはHTと同じ) Private Sub FHT() 'Hadamard変換) For i = 0 To Num Y(i) = X(i) Next 'ビット逆順の並び替え For J = 0 To Num - 1 JP = J: JX = 0: k = 1 Do While k < Num MD = JP Mod 2 JX = JX * 2 + MD JP = JP \ 2 k = k * 2 Loop If J < JX Then temp = Y(J): Y(J) = Y(JX): Y(JX) = temp End If

VBAでの記述 ②FHT(その2) 'FHTの計算 n_half = Num \ 2: Ne = 1 VBAでの記述 ②FHT(その2) 'FHTの計算 n_half = Num \ 2: Ne = 1 Do While Ne < Num 符号 = 1 n_half2 = n_half * 2 For JP = 0 To Num - 1 Step n_half2 JX = 0 For J = JP To JP + n_half - 1 jnh = J + n_half xtmp = 符号 * Y(jnh) Y(jnh) = Y(J) - xtmp Y(J) = Y(J) + xtmp JX = JX + Ne Next 符号 = -符号 n_half = n_half \ 2 Ne = Ne * 2 Loop Y(Num) = Y(0) End Sub

VBAでの記述 ③IFHT(その1) Private Sub IFHT() '逆Hadamard変換 For i = 0 To Num VBAでの記述 ③IFHT(その1) Private Sub IFHT() '逆Hadamard変換 For i = 0 To Num Z(i) = Y(i) Next 'ビット逆順の並び替え For J = 0 To Num - 1 JP = J: JX = 0: k = 1 Do While k < Num MD = JP Mod 2 JX = JX * 2 + MD JP = JP \ 2 k = k * 2 Loop If J < JX Then temp = Z(J): Z(J) = Z(JX): Z(JX) = temp End If  'FHTの計算 n_half = Num \ 2: Ne = 1 Do While Ne < Num

VBAでの記述 ④IFHT(その2) Do While Ne < Num 符号 = 1 n_half2 = n_half * 2 VBAでの記述 ④IFHT(その2) Do While Ne < Num 符号 = 1 n_half2 = n_half * 2 For JP = 0 To Num - 1 Step n_half2 JX = 0 For J = JP To JP + n_half - 1 jnh = J + n_half xtmp = 符号 * Z(jnh) Z(jnh) = Z(J) - xtmp Z(J) = Z(J) + xtmp JX = JX + Ne Next 符号 = -符号 n_half = n_half \ 2 Ne = Ne * 2 Loop Z(Num) = Z(0) For i = 0 To Num Z(i) = Z(i) / Num End Sub

FHT結果