教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 学前教育 >

Matlab和C混合编程的几种方法比较(4)

来源:网络收集 时间:2026-08-23
导读: // TODO: Add your control notification handler code here long ireadlength = m_nDatLen*1024; long li; float* SigI; short shtemp; // ================================ // CFileDialog dlg(TRUE, NULL, NULL

// TODO: Add your control notification handler code here long ireadlength = m_nDatLen*1024; long li; float* SigI; short shtemp;

// ================================ // CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, // \ \ NULL);

//**********文件读取********** if(dlg.DoModal()==IDOK) { CFile file; file.Open(dlg.GetPathName(),CFile::modeRead); // SigI = new float[2*ireadlength]; SigI = new float[ireadlength]; for(li=0; li

initM(MATCOM_VERSION); Mm M = m_nM; Mm F0 = m_nF0; Mm B = m_nB;

Mm Sig = zeros(ireadlength,1); Mm SCF;

for(li=0; li

SCF = SCF_calculate_m(Sig, ireadlength, M, F0, B); exitM(); return;

}

以上代码中,完成周期谱计算的是SCF_calculate_m函数,其余为数据读取和参数导入部分,在SCF_calculate_m.h中可以看到SCF_calculate_m函数原型如下:

Mm SCF_calculate_m(Mm dat, Mm DatLen, Mm M, Mm F0, Mm B); 需要注意的一个问题是,Matcom的数组下标从1开始,C++中从0开始,所以从(float*)SigI直接转换为(Mm)Sig时,用的语句为Sig(li+1,1) = SigI[li];

添加头文件

#include \

#include \

编译运行得到(c)所示的结果,和Matlab中的SCF_calculate_m运行结果(d)对比可知,这种方法是可行的,而且速度占优势。 2.3.4 总结

Matcom是M向C转换的理想工具,转换后生成的C++文件和在Matlab环境中运行时具有明显的速度优势,更重要的是,它解决了Matlab速度慢、VC++显示和计算函数匮乏的顽疾,使Matlab和VC++可以很好的结合起来。

Matcom在两者结合中的应用还有几种方法,比如Matcom的GUI、直接将m文件转换为DLL然后在其他软件环境中调用。

10-120406080100120140160180200220240(a) 1.5E121.4E121.3E121.2E121.1E121E129E118E117E116E115E114E113E112E111E112004006008001,0001,2001,4001,6001,8002,0002,2002,4002,600(b(c) (d

Matlab和C混合编程的几种方法比较(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/595550.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)