马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我在网上找到一个vc调用由matlab编写的加法函数的实例。
可是,我做的是语音信号处理,程序里包含的函数较多,所以想请教一下,有没有可以直接调用整个matlab文件类似打包那样的方法呢?
我的程序如下:文件a5.m
x1=wavread('D:\毕设zj-勿删\REC02.wav'); %读出波形
wp=0.25*pi; %通带边缘频率
ws=0.3*pi; %阻带边缘频率
Rp=1; %通带最大衰减
As=15; %阻带最大衰减
Fs=8000; %采样频率
Ts=1/Fs;
Wp=2/Ts*tan(wp/2); %将模拟指标转换成数字指标
Ws=2/Ts*tan(ws/2);
[N,Wc]=buttord(Wp,Ws,Rp,As,'s'); %选择滤波器的最小阶数
[Z,P,K]=buttap(N); %创建butterworth模拟滤波器
[Bap,Aap]=zp2tf(Z,P,K);
[ba,aa]=lp2lp(Bap,Aap,Wc);
[bd,ad]=bilinear(ba,aa,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的
转换
[H,W]=freqz(bd,ad); %绘制频率响应曲线
figure(1)
plot(W*Fs/(2*pi),abs(H))
grid % ???????
xlabel('频率/Hz')
ylabel('频率响应幅度')
title('Butterworth')
f1=filter(bz,az,x1);
figure(2)
subplot(2,1,1)
plot(t,x1) %画出滤波前的时域图
title('滤波前的时域波形');
subplot(2,1,2)
plot(t,f1); %画出滤波后的时域图
title('滤波后的时域波形');
sound(f1,8000); %播放滤波后的信号
F=fft(f1,256);
f=fs*(0:127)/256;
figure(3)
y2=fft(x1,256);
subplot(2,1,1);
plot(f,abs(y2(1:128))); %画出滤波前的频谱图
title('滤波前的频谱')
xlabel('Hz');
ylabel('幅值'');
subplot(2,1,2)
plot(f,abs(F(1:128))); %画出滤波后的频谱图
title('滤波后的频谱')
xlabel('Hz');
ylabel('幅值');
希望高手能够不惜指教。
感激不尽!!!
谢谢!! |