scilabのエラーについて
よろしくお願いします。
scilabにてオーバーラップを掛けてFFT解析をしたく、いくつかのWebを参考にさせて頂きながら
試しているのですが、”添字に誤りがあります”とエラーになってしまいます。
ソースは
clear all;
stacksize('max')
v0=read_csv('C:\Users\*****\Desktop\scilab\data7.csv',",")
v1 = evstr(v0);//上記v0データは文字列認識の為数値データに変換
//窓関数
N1=256;
win_l = window('hn',N1);
win_l_minus = win_l * -1;
//FFTを実行
N=size(v1,1);//データ長
N2=N1/4; //N/2で50%オーバーラップ
L = floor(N/N2)-1;//全サンプルに対するFFTの必要回数
y = 0;//出力ベクトルyの初期値
past_tail=zeros(1,N2);//ハーフオーバーラップ加算信号の初期値
for k=1:L
n =N2*(k-1);//FFTの開始地点を更新
v2=win_l*v1( n+1 : n+N1 );//観測信号に窓を掛ける
v3=fft(v2,-1);//FFT
y1=fft(v3,1);//IFFT
y=(y,past_tail + y1(1:N2));
//今回のIFFTの前半を前回のIFFT後半に加算してから出力ベクトルyに追加
past_tail=y1(N2+1:N1);//今回のIFFT結果の後半を記憶
end
fv1dBuV=zeros(N,2);
fv1dBuV(1,1) = 0;//DC =0Hzを入力
fv1dBuV(1,2) = 20*log10(abs(y(1)/N)/10.^-6);//dBuVに変換
sr = 4000; //sr:サンプリングレート[sample/sec]
dt = 1/sr; // dt: サンプリング間隔[sec]
T = N*dt; // T: 測定時間[sec]
df =1/T; //Hz df: 1/測定時間->最低周波数、周波数分解能[Hz]
for i=2:N
fv1dBuV(i,1)=(i-1)*df///10^6;//周波数をMHzで記録
fv1dBuV(i,2)=20*log10(abs((y(i))/(N/2))/10.^-6); //N/2の左半分を使用して算出
end
になります。(この後はPlot処理)
y=(y,past_tail + y1(1:N2))で上記エラーが指摘されます。
プログラミングは初心者なのでどのように修正したらよいか
教えていただけると助かります。
また、オーバーラップを掛けてのFFT解析で他の方法があれば
教えてください。
お礼
ありがとうございます。大変よくわかりました。