How do I only get vectors out of the butter function?
2 次查看(过去 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!