私は30秒間のウィンドウに分解し、データの各ウィンドウで高速フーリエ変換を実行するEEGデータをいくつか持っています。私はforループを実装しようとし、インデックスウィンドウのサンプル数でインデックス値をインクリメントしました。これを実行すると、(1)これはデータの最初のウィンドウでは機能しますが、残りの部分では機能しません(つまり、サンプルの数から1を引いた数がdata_fftに必要な要素数より少ないためどちらもフィギュアにプロットされているfと同じ次元を持たない。 (2)ウィンドウにサンプル数を追加してインデックス値を更新しようとしましたが、i = 1の後、私のワークスペースではi = 2になります。私はこれを変更する方法を理解しようとする際に恥ずかしいほど長い時間を費やしてしまったので、正しく動作するので、アドバイスをいただければ幸いです!コードは以下のとおりです。私が何かを明確にすることができたら教えてください。matlab:データの長さのforループで短時間間隔でfftを実行
data_ch6 = data(:,6); % looking at just 1 electrode
tmax = 2*60; % total time in sec I want to analyze; just keeping it to 2 minutes for this exercise
tmax_window = 30; %30 sec window
times = tmax/tmax_window; % number of times fft should be run
Nsamps = tmax*hdr.SPR; % total # samples in tmax; sample rate is 256 hz
Nsamps_window = tmax_window*hdr.SPR; % # samples in time window
f = hdr.SPR*(0:((Nsamps_window-1)/2))/Nsamps_window; % frequency for plotting
for i = 1:Nsamps; % need to loop through data in 30 second windows in tmax
data_fft = abs(fft(data_ch6(i:i+Nsamps_window-1))); %run fft on data window
data_fft = data_fft(i:((i+Nsamps_window-1)/2)); %discard half the points
figure
plot(f, data_fft)
i = i+Nsamps_window;
end
なぜスペクトログラムを使用しないのですか? – ThP
これは、私が最終的に長期間にわたってFFTをやらなければならないので、私自身が作成した練習です。私の問題は、「どのように私はFFTを実行するのですか」よりも「基本的な」ものです。私は、このタイプの状況に対してforループを正しく構築して、特定のポイント数私は何が間違っているのか知りたい。しかし、ありがとう。 – rana