0

信号 s[n] と、信号の非常に低い周波数成分と非常に高い周波数成分を除去するバンドパス フィルターがあります。信号を Matlab 配列に格納し、フィルターを通過させたいと考えています。

ただし、割り当てられたメモリがそのような長い信号を格納するのに十分ではないため、Matlab に s[n] を格納できません。信号を N 個のセグメントに分割し、各セグメントをそのバンドパス フィルターに通し、最後にフィルター処理後にそれらを組み立てることにしました。

このアプローチに直線性の問題があるかどうか疑問に思っています。これが有効でない場合、私が望むものを達成できる他の方法はありますか? ありがとう。

4

2 に答える 2

1

FIR フィルターを使用している場合は、畳み込みを使用できます。

x = rand(1000,1)
b = fir1(100, 0.5)
y1 = zeros(1100, 1)
% compute the response using the first 400 points of x
y1(1:500) = conv(x(1:400),b)
% compute the response using the last 600 points of x
y1(401:1100) = y1(401:1100) + conv(x(401:1000),b)
% compute the whole response just to compare
y2 = conv(x,b)

conv(a,b) の長さは length(a) + length(b) - 1 であることに注意してください

しかし、応答の合計はアプローチの長さと同じになり、おそらく同じメモリの問題が発生するでしょう。

于 2013-04-06T00:14:02.127 に答える