把matlab改成c,数组要用到很多循环,导致c的速度还更慢,其中还牵扯到复数complex,速度就更慢了

作者&投稿:泊睿 (若有异议请与网页底部的电邮联系)
大数组计算,matlab快还是C语言用for循环编写的函数快?~

Matlab用的是单线程计算,一般情况只能按堆栈的形式,排队执行Matlab命令。速度和效率相比比较C语言会慢很多。不过现在有Parallel Computing Toolbox这个工具,是为了弥补没有多线程处理的。你可以百度看看。

一、Matlab并行计算原理梗概
Matlab的并行计算实质还是主从结构的分布式计算。当你初始化Matlab并行计算环境时,你最初的Matlab进程自动成为主节点,同时初始化多个(具体个数手动设定,详见下文)Matlab计算子节点。Parfor的作用就是让这些子节点同时运行Parfor语句段中的代码。Parfor运行之初,主节点会将Parfor循环程序之外变量传递给计算子节点。子节点运算过程时互不干扰,运算完毕,则应该有相应代码将各子节点得到的结果组合到同一个数组变量中,并返回到Matlab主节点。当然,最终计算完毕应该手动关闭计算子节点。
二十六、初始化Matlab并行计算环境
这里讲述的方法仅针对多核机器做并行计算的情况。设机器的CPU核心数量是CoreNum双核机器的CoreNum2,依次类推。CoreNum以不等于核心数量,但是如果CoreNum小于核心数量则核心利用率没有最大化,如果CoreNum大于核心数量则效率反而可能下降。因此单核机器就不要折腾并行计算了,否则速度还更慢。下面一段代码初始化Matlab并行计算环境:
%Initialize Matlab Parallel Computing Enviornment by Xaero | Macro2.cn
CoreNum=2; %设定机器CPU核心数量,我的机器是双核,所以CoreNum=2
if matlabpool('size')<=0 %判断并行计算环境是否已然启动
matlabpool('open','local',CoreNum); %若尚未启动,则启动并行环境
else
disp('Already initialized'); %说明并行环境已经启动。
end

运行成功后会出现如下语句:
Starting matlabpool using the 'local' configuration ... connected to 2 labs.
如果运行出错,按照下面的办法检测:
首先运行:
matlabpool size

如果出错,说明你没有安装Matlab并行工具箱。确认安装了此工具箱后,运行:
matlabpool open local 2;
如果出错,证明你的机器在开启并行计算时设置有问题。请联系MathWorks的售后服务。

觉得C是没理由比matlab慢很多的吧。。加快速度需要以前几点操作:
1.类似于A[i]的取元素操作改成*pA = A; *pA++。
2.for 循环里面取矩阵元素时尽量少做乘法,比如A[i*width+j]这样的全部改成*p++
3.sin/cos提前计算好,查表解决。
4.double改float。

这是必然的,也是没有办法的,C处理矩阵就是这样了!


matlab中的程序能不能转换成c语言
可以转换成c代码,但是你的matlab代码有一定要求,具体可以参考一下coder命令,

Matlab自带的函数(如fft)怎么可以转换成用c可以调用的文件
生成 dll文件 或者你用MATLAB编个程序实现fft,然后用自带的编译器边成exe

如何将matlab自带的nlinfit函数转成C语言
这需要一定的步骤。第一、在命令行里面输入 type fmincon 显示出fmincon函数的代码,如下图。复制这些代码到一个事先创建好的m文件里面,然后保存为fmincon.m文件。第二、点击应用程序,下拉 出现matlab Coder选项,点进去 第三、选择文件 然后继续就可以了 ...

下面是个matlab程序,希望帮帮忙转换成C语言,谢谢啦
很遗憾,标准C不提供图像操作功能。如果要用C语言来做的话需要选用其他的函数库来配套使用。上面的MATLAB程序其实是对源图像卷积操作(如果不知道什么是卷积操作,应该先弄清楚概念再来写程序),3x3卷积核分别是{-1,-1,-1,0,0,0,1,1,1}(对应im_x)和{-1,0,1,-1,0,1,-1,0,1}(对应im_...

请教关于matlab程序改写成C语言程序运行结果的问题
改为float数据类型

需要把一个matlab2010的图像识别的代码转化为c或c++的代码,是需要转化...
Matcom已经过时了。但是,不保证一定可以完全转化纯C代码,因为matlab里好多关键函数是没有源码只有mex或者built-in的。最好的方案还是自己重写,OpenCv是C写的一个开源的图像处理库,借助它会很方便。需要把一个matlab2010的图像识别的代码转化为c或c++的代码,是需要转化为c的源程序。求高手指点 ...

请问有谁能把这个matlab系统转化为c语言程序?万分感谢!
Simulink模型可以借助于MATLAB产品家族的一些模块将其直接转换为C语言代码,但不同版本的模块名和调用方式有些差别。早期的名称叫Real-time Workshop(简称RTW),如下图所示:比较新的版本中叫Simulink Coder,可在Code Generation标签页找到。代码生成还涉及到很多具体的设置,而所生成的代码要进一步利用也...

怎么将matlab做的模糊控制器转成c程序?
在MATLAB中输入 mcc -m 文件名 注意后缀不能掉 注意空格 mcc -m fuzzy.m

我想将一个matlab的m文件转换为c文件,有没有人能帮帮?
使用matlab coder,这里有个MathWorks公司(就是Matlab的拥有者)的一个网上研讨会,就是叫你如何“使用MATLAB Coder从MATLAB生成C\/C++代码 ”。不过得先免费申请个MathWorks的账号,然后再注册一下会议就行了啊~都免费的,放心~http:\/\/www.ilovematlab.cn\/forum.php?mod=viewthread&tid=133610 ...

谁知道matlab的库可不可以转换成供c,c++调用的库
可以。不过需要安装一个matlab提供的MCR的东西。就可以脱离matlab运行。

安多县18878368843: 有谁能把Matlab的程序转换成C程序?怎么转?有详细的方法吗 -
翟关盐酸: 概括地讲,有两种方法:1 利用混合编程技术,在C中直接调用m文件生成的函数.需要进行编译,而且在C程序中要用到很多不常见的数据类型和函数.这些东西在"matlab.h"中进行了定义.2 老老实实地,按照matlab程序的流程,再编写一遍C程序.我不知道你的具体程序是什么?可以百度hi里联系我.

安多县18878368843: 如何将MATLAB转化为C -
翟关盐酸: matlab 主要使用矩阵,变量是矩阵,运算是矩阵.即使是C语言中的一个简单变量,matlab也要视它为矩阵.C语言程序放入matlab使用:(1)必须改写main(){},把main(){},变成 matlab 入口函数 mexFunction(){},(2)其它功能性函数/子程...

安多县18878368843: 怎样将写好的一段matlab程序转换成C语言 -
翟关盐酸: 可以用MATLAB的C++编译器生成转换m语言为C语言,首先得安装编译器,然后用下面语句来转换mcc -m yourfile.m -c

安多县18878368843: 在vc中如何把matlab形式的二维数组转换为c的二维数组
翟关盐酸: 不知道你如何进行编程的.但是你走了一步弯路,matlab compiler可以自动转换成c的.你在c里面,调用meshgrid等函数,得到的数据,就是按照c的排序方式,不需要转换的.

安多县18878368843: 如何将matlab程序变成C语言代码 -
翟关盐酸: C、C++、JAVA都是完整的通用平台的语言.通俗的说,就是它们可以编写任何程序并可以在大部分硬件系统和操作系统中运行,C++、JAVA都是在C语言基础上发展起来的,在表达形式上三者很相似.区别是,C是面向过程语言,就是说,...

安多县18878368843: 怎样把matlab程序转换成c语言??? -
翟关盐酸: 可以将程序写到embedded function放到simulink里面利用RTW workshop就可以生成了 里面可以有矩阵运算matlab基本的函数等,功能还是很丰富的,可以到网上查找相关资料

安多县18878368843: 如何把MATLAB的M文件转换成C语言? -
翟关盐酸: MATLAB 自带生成 C 语言的功能,只需要在编辑器功能区选择“应用程序”,找到 MATLAB Coder,打开,按照步骤操作即可,如图所示.但是它可能有诸多限制,有些内置函数无法生成 C 语言,所以如果遇到这种情况你可能需要用 C 自己实现一些功能.

安多县18878368843: 怎样把matlab中产生的数组搬移到c语言里.
翟关盐酸: 你把数据保存到文件里,在用C语言读取,这样最直接 可以保存成文本格式,也可以是二进制文件

安多县18878368843: 怎么把MATLAB代码转换成C++代码 -
翟关盐酸: 我们使用编译器将自己的源代码转换成目标代码, 使用链接器将我们的目标代码链接成一个可执行程序.另外, 我们使用一些程序在计算机中输入源代码文本并且编辑它.

安多县18878368843: matlab传换为C语言 -
翟关盐酸: MATLAB从5.0开始已经提供了与外部C/C++程序的应用程序接口,为利用C语言调用MATLAB的函数提供了可能.但是MATLAB的接口发展很快,到MATLAB 6.5已经提供了对VC 7.0的支持,同时对C的接口相对于5.X版本有了一定的改变. 在...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网