How do I only get vectors out of the butter function?
조회 수: 4 (최근 30일)
이전 댓글 표시
I am using the function butter as follows.
freq = 125;
rate = 300;
t = [0:0.1:4*pi]
s = sin(t);
[b,a] = butter(2,freq/(rate*2),'low');
dataIn = s;
dataOut = filter(b,a,dataIn);
When I look at b it is a 2x2 matrix, however to use the filter function it must be a vector.
I am using the R2017a.
I have also tried modifying the matlab example in browser and I get a vector
Where am I going wrong?
댓글 수: 1
Alex Mcaulley
2019년 5월 23일
Following butter documentation a and b are always row vectors (also running your code).
답변 (2개)
Jan
2019년 5월 23일
I cannot confirm this. With standard Matlab functions, butter replies vectors. So check, if you use the official function:
which butter -all
Star Strider
2019년 5월 23일
Your filter design has other problems. Your actual sampling frequency is:
Fs = 1/mean(diff(t));
or 10, and the Nyquist frequency (that you use to normalise your desired frequency) is half of that.
Your butter call should be:
[b,a] = butter(2,freq/(Fs/2),'low');
Note also that ‘freq’ must be less than ‘Fs/2’, so a passband frequency of 300 will fail.
It is also better to use filtfilt than filter to do the actual filtering.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Digital and Analog Filters에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!