youurs 发表于 2007-5-14 10:33

如何在vc++中调用整个matlab文件

我在网上找到一个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);
=buttord(Wp,Ws,Rp,As,'s');%选择滤波器的最小阶数
=buttap(N);                  %创建butterworth模拟滤波器

=zp2tf(Z,P,K);
=lp2lp(Bap,Aap,Wc);   
=bilinear(ba,aa,Fs);         %用双线性变换法实现模拟滤波器到数字滤波器的
转换

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

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

谢谢!!
页: [1]
查看完整版本: 如何在vc++中调用整个matlab文件