関数の合成方法に関する質問

地震波のノイズを取るためにバンドパスフィルターを作成しようとしています。
しかし,最後のコードで,エラーが発生し,
”インデックスの配列要素数(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
Keiji Kitajima 2020-11-2
追記です。
やりたいことは,win1とwin2を合成させることです。
ex)
win1=1 2 3
win2=4 5 6
win1とwin2を合成させて,
win=1 2 3 4 5 6
を作成したいと考えています。
何卒宜しくお願い致します。
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 的更多信息

产品

版本

R2020a

评论:

2020-11-5

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!