声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1643|回复: 0

[其他] 如何在vc++中调用整个matlab文件

[复制链接]
发表于 2007-5-14 10:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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('幅值');

希望高手能够不惜指教。
感激不尽!!!

谢谢!!
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-28 12:22 , Processed in 0.058952 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表