请问一下 matlab与c主要的差别在哪?
用C打得出来的,matlab也可以吗?
用matlab打的出来的,C也可以吗?
因为只会C,
所以老师说要用matlab打时想说可不可以用C来做@.@
感【激不尽~
作者:
sunev (Veritas)
2015-04-22 17:27:00两者都是图灵完全(误)
循环什么的matlab都可以写 只要想要会动用c是OK的阿看错 你是本来用matlab要用c 那我就不确定了有可能你们学的东西需要用到不少matlab内建函式 难道这些你都要自己在c重写?还是你找得到别人建好的函式?以我个人是比较建议你干脆用matlab 毕竟你都会用c了 真不行直接在matlab写循环还是会动的
作者:
pipidog (如果狗狗飞上天)
2015-04-23 12:32:00一个是编译式,一个是直译式,完全不一样的逻辑啊!
作者: linux5566 (linux56) 2015-04-23 14:07:00
能用matlab就用吧 不要折磨自己
作者:
aada (aada)
2015-04-23 14:51:00这只是个工具, 用啥都好, 用手算画也可以~
作者:
jatj 2015-04-23 14:55:00速度是最大的考量 matlab优点在丰富的library 不用什么都自己coding, 但是执行速度matlab跟c完全不在同一个档次用于验证想法matlab是很好的工具 但是要开发程式最后还是C
作者:
s4300026 (s4300026)
2015-04-23 23:06:00先用就对了,matlab好用,C会coding到死当老师说用C或matlab时,可以不要选C来折磨自己
简单来说matlab可以即时检视结果、除错又有图形能力、方便的GUI使用以及各种toolbox用C你可能要去找一堆library然后还要编译安装MATLAB都帮你准备好了matlab做99乘法就 for i=1:9,for j=1:9,disp(['i*j=', num2str(i*j)]), end, end更正[num2str(i),'x',num2str(j),'=',num2str(i*j)]
作者:
jatj 2015-04-24 09:25:0099乘法表 kron(1:9,(1:9)')用到两个for就不是matlab的精随了 基本上跟c一样了c: for(int i=1;i<=9;i++) for(int j=1;i<=9;j++)cout << i << '*' << j << '=' << i*j << endl;
只是要print string 如果只output结果当然那样就好也可以这样 [a,b] = meshgrid(1:9, 1:9);arrayfun(@(x, y) [num2str(x), '*', num2str(y),'=', num2str(x*y)], a, b, 'UniformOutput', false)快程式易读性、向量矩阵运算等都是MATLAB胜出比较多向量矩阵运算,我是指撰写程式上
作者: linux5566 (linux56) 2015-04-24 13:36:00
你各别写个矩阵乘法 就知道差别了
用C和matlab写个1000x1000的复数反矩阵 就知道差别了
教授给的题目是哪一类的,如果都属于数学 画图之类不用想Mathlab 除非写出来的code跑个好几天也跑不完再来考虑c,不过 好像Mathlab也有提供转C的功能...
作者:
warex14 (航)
2015-04-25 11:18:00C的好处应该就是“免费”,MATLAB很贵再来就是MATLAB属于直译式语言速度比较慢(不过人家还在写c的时候MATLAB都应该写完跑好几次了)
matlab转c的code不见得可以跑,慢的话针对慢的算法写c,用matlab call c即可。
作者:
jatj 2015-04-26 03:31:00楼上warex你大概没跑过c只要五小时matlab要超过5周的project这时候你花一个月写程式也值得两个语言的基本用处完全不一样 这应该是原po要搞懂的
作者:
sunev (Veritas)
2015-04-26 08:31:00十倍速正常,差到百倍我会觉得那个人不懂matlab……
matlab在双层以上循环(叠代)是很可能慢到这种地步无法使用向量运算下是有可能差那么多的我自己亲身例子是小资料五倍,大资料拉到二十倍...
作者:
jatj 2015-04-26 10:04:00我当时至少也有八年使用的经验了 我想我没有到不懂的地步当你处理的资料是以千万个循环当单位来计算 资料量是GB等级的时候 或许就可以体会我说的话了 有兴趣欢迎私下讨论稍微更正 应该说资料点数是以10^9以上个int来计算的时候没记错我当初跑了10^10^4个循环 一个循环产生3个int一定要用循环是因为下个点是根据之前资料产生的 当资料大的时候就要存回硬盘适时再抓出来 每个循环也会呼叫其他循环有兴趣我可以把原始档丢上来C和MATLAB都有 是我研究所修课的期末project我当时是已有八年Matlab经验 C不到半年
我觉得s大根本没看过费式数列的效能比较,差到四千多倍
楼上这是一个矩阵向量化去算各自费式数列的值,不是单一个数的费式数列向量化
作者:
sunev (Veritas)
2015-04-26 12:43:00jatj 可以大概讲一下算法吗?如果没办法用空间换时间那是没救没错。celestialgod的费式数列是什么意思?不能像oversky0一样用公式解吗?
oversky0的连结是向量化运算整数矩阵的每一个元素的费式数列,等于一次跑跟矩阵元素一样多个的费式数列,说真的那样不如建立一个最大数,再用参照位置找出来对应的费式数列值。最大数的费式数列反正他还是递回就是会比c慢上许多。
作者:
sunev (Veritas)
2015-04-26 13:28:00oversky0给的连结是直接用公式,没有用到递回。matlab用这个公式是有可能比c慢,但应该不会慢到十倍以上
最后一行还是call itself.....我误会了.... 抱歉,不过公式解确实会快一点,我例子举的不够好Computation Time Comparison Between Matlab and C++... ,2012超过四百倍。
作者:
sunev (Veritas)
2015-04-26 14:15:00你说的四百倍是指递回公式吗? 你算到多大的n啊?
作者:
oversky0 (oversky0)
2015-04-26 14:21:00作者:
sunev (Veritas)
2015-04-26 14:40:00楼上的连结真的是太惨烈了……
julia某些比较实在不适合或许可以尝试用PSO做比较,两者在较多Swarms下如果目标函数是难以向量化的函数,会差上几百倍例如:design的optimal,分类的AUC, accurate rate
作者:
jatj 2015-04-27 04:22:00给原po应该要了解各个语言的优缺点 适时选择适当语言
作者:
warex14 (航)
2015-04-27 15:45:00我确实没遇过那种MATLAB要跑超久的project我c也没有很精通所以我也只是就我曾经遇过的问题来说还在coding c的时候MATLAB应该已经写好且跑完了没有说一定是这样,但非特殊情形的时候,我觉得是这样啦
作者:
math99 (新世界)
2015-04-28 14:19:00换个角度想 乘机会多学一套软件也不错啊