TIME-FREQUENCY ANALYSISの例題を解き進める.
メモ:コーエンクラス 核関数を使うとクロス項が消えるりくつ
メモ.
検証していないので,情報に対して責任は一切持ちません.
コーエンクラスはウィグナー分布に似た形の関数=曖昧度関数と核関数の畳み込みとなっている.
核関数は何をしてるかっていうと,どうやらクロス項を抑制しているっぽい.
なんでクロス項を抑制できるの?と疑問である.
その辺は現在勉強中であるが,どうやら以下のようなイメージらしい.
核関数はチョイウィリアムス.
値は暗赤色=1,暗青色=0で,原点回りの値を抽出するようなフィルタである.
検証については,
実験的には曖昧度関数などを描いて信号が原点を通る直線になるのか確かめる.
理論的には曖昧度関数の勉強
が必要である.
仕事忙しくなってきたので検証はかなり後になりそう.
【信号処理基礎】実信号の解析信号への変換方法
自分用メモ.計算が合ってるかは自信が無い.
何かあればコメントいただけるとありがたいです.
時間周波数解析手法の一種であるウィグナー分布において,正負の周波数成分を持つ信号や二つ以上の成分から成る信号を分析してみると,その中間部分にスペクトルが発生し,これをクロス項という.本来信号が無いはずの部分にスペクトルが出ているのはよろしくない(そのためクロス項を抑制するような研究が多くなされている).クロス項抑制のためには実信号を負の周波数を含まないような複素信号に変換してからウィグナー分布の計算を行う.負の周波数を含まない複素信号を解析信号という.今回は実信号から解析信号に変換する計算方法を詳しく書く.
解析信号を,実信号を,のフーリエ変換をとする.
更に詳しい説明.
これは普通の逆フーリエ変換である.
次に負の周波数を消し去る.ここの計算が本質部分である.
次にとして入れる.
とをくっつけて,積分順序を入れ替える.
内側のを計算するが,ここで
を用いる.(この計算はここでは詳しく計算しない.結果だけ用いる.)
内側の積分結果を元の式に代入して,第一項と第二項を分離する.
第一項のはについての積分だが,の時のみなので,
第二項のだが,の部分はヒルベルト変換なので,
と書く.
以上をまとめて,
となる.
参考
matlab 信号の両端を滑らかに0にする場合はコサインテーパーを使う
実験用に正弦信号を作成することがある.例として1~1.5秒部分に5kHzの正弦波,1.5~3秒部分に10kHzの正弦波が含まれる信号の時間-振幅グラフを図1に,スペクトログラムを図2に示す(スペクトログラムを表示する部分までのmatlabコードを下に示す).スペクトログラムを見ると信号の開始時点及び終了時点において,周波数の広い範囲に大きい値が出ている(図3).これは信号が突然0→1に立ち上がる(終了時点では1→0になる)ことから,その時点においてあらゆる周波数が反応するのは当然である.しかしA[Hz]の正弦信号を入力したらA[Hz]のところにだけ値が出て来て欲しいわけで,そういうときは普通ならばスペクトログラムのウィンドウ幅を長くするなど分析側のパラメータを調整する必要がある.今回は理想的な信号が入ってくる場合の分析器の挙動を見たいので,分析側のパラメータを変えずに,実験用の信号を理想的なものに調整して綺麗な結果を出してみる.
図 1: 信号の時間-振幅グラフ
図 2: 信号のスペクトログラム
図 3: 信号のスペクトログラム(説明付)
% % 信号を生成してスペクトログラムを表示する % clear all; close all; clc Fs = 32000; SNRdB = -10; % 信号を生成する t1 = 1.5; f1 = 5000; N = Fs * t1; t = ((1:N)-1)/Fs; s1 = sin(2*pi*f1*t); t2 = 1.5; f2 = 10000; N = Fs * t2; t = ((1:N)-1)/Fs; s2 = sin(2*pi*f2*t); s0 = horzcat(s1, s2); % 信号の前後にpad_time秒間の無音部分をくっつける pad_time = 1; s = padarray(s0, [0 round(pad_time * Fs)], 0, 'both'); % 時間グラフを描く N = length(s); t = ((1:N)-1)/Fs; figure plot(t, s); title('信号の時間-振幅グラフ'); xlabel('時間(sec)'); ylabel('振幅'); % 信号のスペクトログラムを描画 Nw = 1024; Nol = Nw*3/4; NFFT = Nw; figure; spectrogram(s, Nw, Nol, NFFT, Fs, 'yaxis'); %ハミング窓 title('信号のスペクトログラム'); xlabel('時間(sec)'); colormap 'jet' caxis_max = -20; caxis_min = -120; caxis([caxis_min, caxis_max]);
つまりこういうことをしたいわけである.
図 4: 立ち上がり立ち下りが滑らかな信号の時間-振幅グラフ
信号の最初と終わりの部分だけ窓関数を掛けたような形である.ネタバレするとコサインテーパーウィンドウを掛けてやればいいわけだが,最初はハンウィンドウを前半後半に分けて信号の最初と終わりにそれぞれ掛けるというやり方を取っていた.
図 5: ハンウィンドウ
図 6: ハンウィンドウを分割して信号の前後とかけあわせるやつの説明
% % 上のコードの「信号を生成する」 の部分を下に入れ替える % % 信号の両端に少しだけ窓関数をかける single_sided_window_length_sec = 0.2;% 片側窓関数がかけられる時間 single_sided_window_length = single_sided_window_length_sec * Fs;% 窓関数の片側の長さ w = hann(single_sided_window_length * 2);% ハン窓を作成 figure N = length(w); t = ((1:N)-1)/Fs; plot(t, w); title('ハンウィンドウ'); xlabel('時間(sec)'); % 信号を生成する t1 = 1.5; f1 = 5000; N = Fs * t1; t = ((1:N)-1)/Fs; s1 = sin(2*pi*f1*t); % 窓関数をかける s1(1:single_sided_window_length) = w(1:single_sided_window_length)' .* s1(1:single_sided_window_length);% 左側 s1(end-single_sided_window_length+1:end) = w(single_sided_window_length+1:end)' .* s1(end-single_sided_window_length+1:end);% 右側 t2 = 1.5; f2 = 10000; N = Fs * t2; t = ((1:N)-1)/Fs; s2 = sin(2*pi*f2*t); % 窓関数をかける s2(1:single_sided_window_length) = w(1:single_sided_window_length)' .* s2(1:single_sided_window_length);% 左側 s2(end-single_sided_window_length+1:end) = w(single_sided_window_length+1:end)' .* s2(end-single_sided_window_length+1:end);% 右側 s0 = horzcat(s1, s2); % 信号の前後にpad_time秒間の無音部分をくっつける pad_time = 1; s = padarray(s0, [0 round(pad_time * Fs)], 0, 'both');
ハンウィンドウを分割して信号の前後にかけたものの時間-振幅グラフを図7,スペクトログラムを図8にそれぞれ示す.0→1に滑らかに変化しているので,スペクトログラムで欲しいところだけに信号が表示されている.
図 7: 立ち上がり立ち下りを滑らかにした信号の時間-振幅グラフ
図 8: 立ち上がり立ち下りを滑らかにした信号のスペクトログラム
こんなめんどくさいこと,やる?と思い上司に上手いやり方は無いか相談したところ,そういう場合は普通はコサインテーパーを使うとのこと.jp.mathworks.com
コサインテーパーウィンドウは開始部分及び終了部分がコサインの形をしていて,真ん中あたりは値が1のウィンドウである.信号と同じ長さのコサインテーパーウィンドウを用意して,信号にかけてやればOKである.
図 9: 立ち上がり立ち下りを滑らかにした信号の時間-振幅グラフ(コサインテーパー使用)
% % 上のコードの「信号を生成する」 の部分を下に入れ替える % single_sided_window_length_sec = 0.2;% 片側窓関数がかけられる時間 % 信号を生成する t1 = 1.5; f1 = 5000; N = Fs * t1; t = ((1:N)-1)/Fs; s1 = sin(2*pi*f1*t); % 窓関数をかける window_signal_length_ratio = (single_sided_window_length_sec*2)/t1;% 窓関数がかけられる時間の比 w = tukeywin(N, window_signal_length_ratio); figure plot(t, w); title('コサインテーパーウィンドウ'); xlabel('時間(sec)'); s1 = w' .* s1; t2 = 1.5; f2 = 10000; N = Fs * t2; t = ((1:N)-1)/Fs; s2 = sin(2*pi*f2*t); % 窓関数をかける window_signal_length_ratio = (single_sided_window_length_sec*2)/t2;% 窓関数がかけられる時間の比 w = tukeywin(N, window_signal_length_ratio); % 5kHzのコサインテーパーウィンドウと同じなのでグラフは省略 s2 = w' .* s2; s0 = horzcat(s1, s2); % 信号の前後にpad_time秒間の無音部分をくっつける pad_time = 1; s = padarray(s0, [0 round(pad_time * Fs)], 0, 'both');
図 10: コサインテーパーウィンドウ
図 11: 立ち上がり立ち下りを滑らかにした信号の時間-振幅グラフ(コサインテーパー使用)
図 12: 立ち上がり立ち下りを滑らかにした信号のスペクトログラム(コサインテーパー使用)
明かりを消して寝よう:スタンフォード式 最高の睡眠
より良い睡眠を取るための本。 このような本は書店で目立つ位置に置かれており、過労民族の日本人もどうやら睡眠や休息について意識し始めたっぽい。
私の睡眠スタイルはカスである。
・敷き布団が無い。タイルカーペットの上に寝ている。
・部屋の照明をつけたまま寝ている。(視覚への刺激がある)
・アニメや音楽を流したまま寝ている。(聴覚への刺激がある)
・寝る時間が不規則である。
というか寝落ちするギリギリまでアニメを見ていたりツイッターをやったりしていて、眠気が限界まで来たらその場でそのまま寝るというスタイルである。
起きている状態と寝ている状態がかなり曖昧なのである。
大学時代からこういう感じだったので別にいいやと思っていたが、
最近
・日中常に眠い
・足の痛みが取れない
・メンタルをやらかした(病院に行った)
等の不調に悩まされるようになった。
これではまずいと思い、睡眠について真面目に考えるようになり、本を読んでみたわけである。
本で紹介されているTipsの中で簡単に実践できそうなものを探したところ、どうやら明かりを消して寝るというのが良いらしい。 寝ている人にライトを照らすと無意識に布団を頭まで被るなど光を遠ざける行動を取る。 睡眠時に体は明かりを拒んでいるというわけである。
さっそくアニメを垂れ流すのをやめて部屋を暗くして寝てみたところ、びっくりするほど目覚めが良くなった。 日中ほぼ眠気が訪れず、昼寝も必要無くなった。 (えっ、こんな簡単に日中のパフォーマンス向上するの?)と驚く限りである。 と同時に(なんでこんな簡単なことを今まで実践していなかったの?)と後悔した。
睡眠はどうやら大事っぽい。 私レベルに睡眠を軽く考えていた人(布団すら無い人)はそうそういらっしゃらないと思うが、 日ごろ眠い、ダルい、疲れが取れないと感じている人は睡眠の質を高めると解決するかもしれない。
以上
それにしても「明かりを消して部屋を暗くして寝るとよく眠れますよ」って異世界世界の主人公のセリフみたいだし、「マジか、知らんかったブログ書くわ」っていう私の反応も異世界の住人のそれだと思う。(もちろん本ではこのような基礎的なTipsだけでなく、もっと目からうろこな話も載っている)
メモ:SBI証券 口座開設 マイナンバーは住民票で代用可
メモ.
投資ではSBI証券を利用しており,引越に伴ってSBI証券上で住所変更手続きを行った.
住所変更をする場合は
・マイナンバー確認書類
・個人情報確認書類
を再提出する必要がある.
口座開設の際はマイナンバー確認書類として通知カードを使用した.
しかし,通知カードが見当たらない.
マイナンバー入り住民票で代用できるとは思うが,
WEB上のマイナンバー確認書類の選択画面では
マイナンバーカードか通知カードの2通りしか選べない(マイナンバー入り住民票を選べない)
SBI証券に電話で確認したところ,
マイナンバー確認書類で通知カードを選択し,通知カードをアップロードする場所にマイナンバー入り住民票の画像をアップロードし,
個人情報確認書類にも同じ画像(マイナンバー入り住民票)をアップロードすればOKとのことだった.
おそらくどの証券口座でも同様だろう.(多分)