生成c++代码通过Matlab编码器太慢了

29日视图(30天)
你好,
我有一个算法用matlab编写,检测一些artefatcs pulsewave血。这些算法转换为c++ maltab编码器和我使用这些c++文件c#西南。它将正常工作。
但是,我在我的代码中使用几个冷杉,其中一个是10000订单冷杉。信号长度约1米样品,所以花太多时间计数与过滤器(…)函数或conv(. .)函数。我试图数卷积定理的冷杉,我用这个:
fftLen = 2 ^ nextpow2(长度(值));
filteredValues =传输线(fft(价值观、fftLen)。* fft(系数,fftLen));
它工作在matlab快超过30倍。但是如果我把代码转换为c++通过matlab编码器,它不是那么快。这是超过10倍低于matlab版本。我使用matlab 2017 b。为什么?
5个评论
沃尔特·罗伯森
沃尔特·罗伯森 2019年2月13日
多线程在R2007a根据罗兰的博客添加了3月1日,2007年。

登录置评。

接受的答案

瑞安·利文斯顿
瑞安·利文斯顿 2019年2月13日
编辑:瑞安·利文斯顿 2019年2月13日
如果生成的代码的瓶颈 fft 或其他MATLAB内置函数,我建议看看这个答案:
简而言之,这些函数使用高度优化的库在MATLAB沃尔特提到和计算fft算法。默认生成的代码可能不优化的可移植性。
答案描述R2017b可以指示MATLAB编码器和仿真软件编码器生成调用FFTW提高FFT性能:万博1manbetx
有类似的功能来生成调用bla和LAPACK矩阵运算和线性代数:
注意: 当生成c++代码调用FFTW R2017b中有一个错误在R2017b_update5:固定
所以,如果你想使用FFTW编码器和生成c++ R2017b,我建议安装更新。
2的评论

登录置评。

更多的答案(0)

s manbetx 845


释放

R2017b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!