Afficher commentaires plus anciens
地震波のノイズを取るためにバンドパスフィルターを作成しようとしています。
しかし,最後のコードで,エラーが発生し,
”インデックスの配列要素数(10000)を超えています”とメッセージが表示され,回りません。
解決コードと回らない理由をご教授して頂けたら幸いです。
何卒よろしくお願いいたします。
N=20000 %データ数
T=0.005 %サンプリング周期
fs = 1/T; %サンプリング周波数
f = fs*(1:(N/2))/N; % 周波数
% 周期効果関数窓
winX = sqrt(1 ./ f);
winX(1,1)=0;
% ハイカット関数窓
Y = f ./ 10;
winY = 1./sqrt(ones(1,num/2) + 0.694*Y.^2 + 0.241*Y.^4 + 0.0557*Y.^6 + 0.009664*Y.^8 + 0.00134*Y.^10 + 0.000155*Y.^12);
% ローカット関数窓
winZ = sqrt(ones(1,num/2) - exp(-(f./0.5).^3));
% 関数窓合成
win1 = winX .* winY .* winZ; % 前半分用
win2 = fliplr(winX) .* fliplr(winY) .* fliplr(winZ); % 後半用
%ナイキスト周波数考慮
nn = N/2;
%バンドパスフィルターの作成
win = [win1(1:nn),win2(nn+1:num)];
% ↑の関数でエラーが出ます。
2 commentaires
Keiji Kitajima
le 2 Nov 2020
Naoya
le 5 Nov 2020
win2 は 1x10000 のベクトル になっていると思いますが、
10001 要素め以降にアクセスしようとしているためエラーが発生しています。
例えば、
win = [win1(1:nn),win2(nn+1:num)];
の部分を
win = [win1(1:nn),win2(1;nn)];
として所望の結果が得られますでしょうか?
Réponses (0)
Catégories
En savoir plus sur Acoustics, Noise and Vibration dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!