Matlab显示没有buttord函数,Matlab程序运行后出错buttord函数的问题

本帖最后由 shuFeeYoung 于 2013-10-6 21:12 编辑

错如提示:

Error using buttord (line 59)

Invalid option for final argument.

Error in bianshengqi (line 42)

[N,Wn]=buttord(wp1,ws1,Rp,Rs,'x1');   %选择滤波器的最小阶数

请指教~怎么就用错了....

代码如下:

fs=16000;           %取样频率

duration=5;         %录音时间

fprintf('Press any key to start %g seconds of recording...\n',duration);

pause;

fprintf('Recording...\n');

y=wavrecord(duration*fs,fs);

wavwrite(y,fs,'D:\1.wav'); %duration*fs 是总的采样点数

fprintf('Finished recording.\n');

fprintf('Press any key to play the recording...\n');

pause;

wavplay(y,fs)

fileName='D:\1.wav';%注:将需要读取的文件名赋值给fileName

sound(y,fs);%播放该文件

figure(1)

subplot(2,1,1);plot(y);title('波形');

x1=wavread('D:\1.wav'); %读取语音信号的数据,赋给变量x1

fs=16000;          %播放语音信号

y1=fft(x1,1024);           %对信号做1024点FFT变换

f=fs*(0:511)/1024;

figure(2)

subplot(2,1,1);

plot(abs(y1(1:512)))    %做原始语音信号的FFT频谱图

title('原始语音信号FFT频谱')

xlabel('Hz');

ylabel('fuzhi');

x1=wavread('D:\1.wav');

size(x1);

t=0:1/16000:(size(x1)-1)/16000;

Au=0.03;

d=[Au*cos(2*pi*5000*t)]';

x2=x1+d;

wp=0.25*pi;

ws=0.3*pi;

Rp=1;

Rs=15;

Fs=16000;

Ts=1/Fs;

wp1=2/Ts*tan(wp/2);                 %将模拟指标转换成数字指标

ws1=2/Ts*tan(ws/2);

[N,Wn]=buttord(wp1,ws1,Rp,Rs,'x1');   %选择滤波器的最小阶数

[Z,P,K]=buttap(N);                %创建butterworth模拟滤波器

[Bap,Aap]=zp2tf(Z,P,K);

[b,a]=lp2lp(Bap,Aap,Wn);

[bz,az]=bilinear(b,a,Fs);           %用双线性变换法实现模拟滤波器到数字滤波器的转换

[H,W]=freqz(bz,az);                 %绘制频率响应曲线

figure(1)

plot(W*Fs/(2*pi),abs(H))

grid

xlabel('频率/Hz')

ylabel('频率响应幅度')

title('Butterworth')

f1=filter(bz,az,x2);

figure(2)

subplot(2,1,1)

plot(t,x2)                          %画出滤波前的时域图

title('滤波前的时域波形');

subplot(2,1,2)

plot(t,f1);                      %画出滤波后的时域图

title('滤波后的时域波形');

sound(f1,16000);                    %播放滤波后的信号

F0=fft(f1,1024);

f=fs*(0:511)/1024;

figure(3)

y2=fft(x2,1024);

subplot(2,1,1);

plot(f,abs(y2(1:512)));          %画出滤波前的频谱图

title('滤波前的频谱')

xlabel('Hz');

ylabel('fuzhi');

subplot(2,1,2)

F1=plot(f,abs(F0(1:512)));       %画出滤波后的频谱图

title('滤波后的频谱')

xlabel('Hz');

ylabel('fuzhi');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值