関数の合成方法に関する質問
이전 댓글 표시
地震波のノイズを取るためにバンドパスフィルターを作成しようとしています。
しかし,最後のコードで,エラーが発生し,
”インデックスの配列要素数(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
Keiji Kitajima
2020년 11월 2일
Naoya
2020년 11월 5일
win2 は 1x10000 のベクトル になっていると思いますが、
10001 要素め以降にアクセスしようとしているためエラーが発生しています。
例えば、
win = [win1(1:nn),win2(nn+1:num)];
の部分を
win = [win1(1:nn),win2(1;nn)];
として所望の結果が得られますでしょうか?
답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Acoustics, Noise and Vibration에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!