z****u 发帖数: 23 | 1 大侠们能不能评价一下C(C++)跟Matlab相比,主要的优点是什么?我的兴趣主要在科学
计算。
从使用Matlab以来,也没有觉得它有太大的缺陷。因为很多科学计算的问题,最终都是
化为距阵的运算,而这点Matlab似乎并不弱,而且自从有了64位的R2007b,对于内存
的使用几乎没有限制了。我的感觉Matlab有这些缺点:
1。在做很大的循环,而且循环的每一部里面也比较复杂的情况下,Matlab似乎会很慢
。是不是这样,还是程序写的有问题?在这种情形下,我就一般用C++代替。
2。如果遇到更复杂的问题,需要用到并行计算,Matlab就没有用武之地了。这时候,
就必须要用程序语言,C或者Fortran了。
大侠们在多多补充。我一直想从Matlab过渡到C++,但是迄今为止动力还不够--主要
是没遇到足够复杂的问题吧。恳请大家帮我加强加强动力。多谢多谢! |
t****t 发帖数: 6806 | 2
vectorize your program as much as possible. matlab's (matrix) computing
engine is very fast, almost as fast as you can get; however, the interpreter
is slow. so you have to vectorize your program and let matlab to do the
loop in one go.
try distributed computing toolbox. i have no experience with that so no
comment.
【在 z****u 的大作中提到】 : 大侠们能不能评价一下C(C++)跟Matlab相比,主要的优点是什么?我的兴趣主要在科学 : 计算。 : 从使用Matlab以来,也没有觉得它有太大的缺陷。因为很多科学计算的问题,最终都是 : 化为距阵的运算,而这点Matlab似乎并不弱,而且自从有了64位的R2007b,对于内存 : 的使用几乎没有限制了。我的感觉Matlab有这些缺点: : 1。在做很大的循环,而且循环的每一部里面也比较复杂的情况下,Matlab似乎会很慢 : 。是不是这样,还是程序写的有问题?在这种情形下,我就一般用C++代替。 : 2。如果遇到更复杂的问题,需要用到并行计算,Matlab就没有用武之地了。这时候, : 就必须要用程序语言,C或者Fortran了。 : 大侠们在多多补充。我一直想从Matlab过渡到C++,但是迄今为止动力还不够--主要
|
j****g 发帖数: 597 | 3 MPI is a good start for distributed computation. |
z****u 发帖数: 23 | 4 Could u give a simple example how to vectorize a loop? Thanks a lot!
interpreter
【在 t****t 的大作中提到】 : : vectorize your program as much as possible. matlab's (matrix) computing : engine is very fast, almost as fast as you can get; however, the interpreter : is slow. so you have to vectorize your program and let matlab to do the : loop in one go. : try distributed computing toolbox. i have no experience with that so no : comment.
|
z****u 发帖数: 23 | 5 Thanks a lot! There does exist a 'MatlabMPI' which I didn't hear of before!
【在 j****g 的大作中提到】 : MPI is a good start for distributed computation.
|
a****l 发帖数: 8211 | 6 have you considered thing like mex ?
【在 z****u 的大作中提到】 : 大侠们能不能评价一下C(C++)跟Matlab相比,主要的优点是什么?我的兴趣主要在科学 : 计算。 : 从使用Matlab以来,也没有觉得它有太大的缺陷。因为很多科学计算的问题,最终都是 : 化为距阵的运算,而这点Matlab似乎并不弱,而且自从有了64位的R2007b,对于内存 : 的使用几乎没有限制了。我的感觉Matlab有这些缺点: : 1。在做很大的循环,而且循环的每一部里面也比较复杂的情况下,Matlab似乎会很慢 : 。是不是这样,还是程序写的有问题?在这种情形下,我就一般用C++代替。 : 2。如果遇到更复杂的问题,需要用到并行计算,Matlab就没有用武之地了。这时候, : 就必须要用程序语言,C或者Fortran了。 : 大侠们在多多补充。我一直想从Matlab过渡到C++,但是迄今为止动力还不够--主要
|
h**o 发帖数: 347 | 7 matlab is a simulation environment, not a language at all...
【在 z****u 的大作中提到】 : 大侠们能不能评价一下C(C++)跟Matlab相比,主要的优点是什么?我的兴趣主要在科学 : 计算。 : 从使用Matlab以来,也没有觉得它有太大的缺陷。因为很多科学计算的问题,最终都是 : 化为距阵的运算,而这点Matlab似乎并不弱,而且自从有了64位的R2007b,对于内存 : 的使用几乎没有限制了。我的感觉Matlab有这些缺点: : 1。在做很大的循环,而且循环的每一部里面也比较复杂的情况下,Matlab似乎会很慢 : 。是不是这样,还是程序写的有问题?在这种情形下,我就一般用C++代替。 : 2。如果遇到更复杂的问题,需要用到并行计算,Matlab就没有用武之地了。这时候, : 就必须要用程序语言,C或者Fortran了。 : 大侠们在多多补充。我一直想从Matlab过渡到C++,但是迄今为止动力还不够--主要
|
t****t 发帖数: 6806 | 8 why would you say that? the core matlab is a complete computer language in
every sense. it even provides some simple OO functionality! on the other
hand, simulink, is a simulation environment which uses matlab (and other
components).
【在 h**o 的大作中提到】 : matlab is a simulation environment, not a language at all...
|
t********y 发帖数: 7 | 9 Matlab no help for looking for job. Turn to C+++ ASAP. |
z******i 发帖数: 59 | 10 Matlab can be very fast if you write the code correctly. A trick I just
learnt from coworker.
If you want to change all negative numbers in matrix to 0.
My old way to do this
for i=1:length(a)
if a(i) < 0
a(i) = 0
end
end
The better way to do it
index = find(a<0);
a(index) = 0
You can always use c->mex if there is core algorithm you want to run
as fast as possible. You don't need to change to C/C++ totally.
【在 z****u 的大作中提到】 : Could u give a simple example how to vectorize a loop? Thanks a lot! : : interpreter
|
|
|
k****f 发帖数: 3794 | 11 这个是基本技巧吧
a(a<0)=0
a(a<0)=[]就是删除所有负值
【在 z******i 的大作中提到】 : Matlab can be very fast if you write the code correctly. A trick I just : learnt from coworker. : If you want to change all negative numbers in matrix to 0. : My old way to do this : for i=1:length(a) : if a(i) < 0 : a(i) = 0 : end : end : The better way to do it
|
s******e 发帖数: 285 | 12 nod
【在 k****f 的大作中提到】 : 这个是基本技巧吧 : a(a<0)=0 : a(a<0)=[]就是删除所有负值
|
A**********e 发帖数: 3102 | 13 you can compile m-file to .exe file, even stand-along .exe file.
科学
都是
内存
很慢
候,
主要
【在 h**o 的大作中提到】 : matlab is a simulation environment, not a language at all...
|
A**********e 发帖数: 3102 | 14 这个不属于技巧,属于对错问题。不这么用 matlab,严格说,就是错误使用 matlab。
【在 k****f 的大作中提到】 : 这个是基本技巧吧 : a(a<0)=0 : a(a<0)=[]就是删除所有负值
|
i*****l 发帖数: 50 | 15 这个有必要么,matlab作为商业软件,的确有它的过人之处,就跟MS差不多,很好用,
很容易上手,基本的函数都有了,直接调用就可以了。
但是c++还不是那么规范,好比Linux, 在没有必要的情况下,没有必要强迫自己从MS转化
到LINUX吧,除非楼主主观意愿很强,非要学这个不可,那就学把
没有必要非要别人来调动你的积极性阿
【在 z****u 的大作中提到】 : 大侠们能不能评价一下C(C++)跟Matlab相比,主要的优点是什么?我的兴趣主要在科学 : 计算。 : 从使用Matlab以来,也没有觉得它有太大的缺陷。因为很多科学计算的问题,最终都是 : 化为距阵的运算,而这点Matlab似乎并不弱,而且自从有了64位的R2007b,对于内存 : 的使用几乎没有限制了。我的感觉Matlab有这些缺点: : 1。在做很大的循环,而且循环的每一部里面也比较复杂的情况下,Matlab似乎会很慢 : 。是不是这样,还是程序写的有问题?在这种情形下,我就一般用C++代替。 : 2。如果遇到更复杂的问题,需要用到并行计算,Matlab就没有用武之地了。这时候, : 就必须要用程序语言,C或者Fortran了。 : 大侠们在多多补充。我一直想从Matlab过渡到C++,但是迄今为止动力还不够--主要
|
t****t 发帖数: 6806 | 16 没必要强迫转换当然是对的,不过有两点你搞错了
C++从98年标准出台以后,已经很规范了,就连最土的VC++都已经比较规范了。
MS的确很好用,但说到规范,linux比MS遵守规范得多
转化
【在 i*****l 的大作中提到】 : 这个有必要么,matlab作为商业软件,的确有它的过人之处,就跟MS差不多,很好用, : 很容易上手,基本的函数都有了,直接调用就可以了。 : 但是c++还不是那么规范,好比Linux, 在没有必要的情况下,没有必要强迫自己从MS转化 : 到LINUX吧,除非楼主主观意愿很强,非要学这个不可,那就学把 : 没有必要非要别人来调动你的积极性阿
|
i*****l 发帖数: 50 | 17 嗯,那我把规范换成成熟好了
【在 t****t 的大作中提到】 : 没必要强迫转换当然是对的,不过有两点你搞错了 : C++从98年标准出台以后,已经很规范了,就连最土的VC++都已经比较规范了。 : MS的确很好用,但说到规范,linux比MS遵守规范得多 : : 转化
|
t****t 发帖数: 6806 | 18 C++从98年标准出台以后,已经很成熟了,就连最土的VC++都已经比较成熟了。
【在 i*****l 的大作中提到】 : 嗯,那我把规范换成成熟好了
|
i*****l 发帖数: 50 | 19 哦,那为什么我写一个QR分解还要到处找代码?而matlab只需要一行就搞定了?
还有最基本的稀疏矩阵的乘法,c++下面就可找到好几种不同的写法。这个时候怎么决
定那个最好?
为了不同的目的,需要不同的数据结构,往往搜索需要的程序或者库函数就需要好久,
当然
如果你啥都自己写,那我就没话说了。
【在 t****t 的大作中提到】 : C++从98年标准出台以后,已经很成熟了,就连最土的VC++都已经比较成熟了。
|
t****t 发帖数: 6806 | 20 成熟和方便好象是两个概念吧。
【在 i*****l 的大作中提到】 : 哦,那为什么我写一个QR分解还要到处找代码?而matlab只需要一行就搞定了? : 还有最基本的稀疏矩阵的乘法,c++下面就可找到好几种不同的写法。这个时候怎么决 : 定那个最好? : 为了不同的目的,需要不同的数据结构,往往搜索需要的程序或者库函数就需要好久, : 当然 : 如果你啥都自己写,那我就没话说了。
|
|
|
r****t 发帖数: 10904 | 21 为什么总有人这么搞?
【在 z******i 的大作中提到】 : Matlab can be very fast if you write the code correctly. A trick I just : learnt from coworker. : If you want to change all negative numbers in matrix to 0. : My old way to do this : for i=1:length(a) : if a(i) < 0 : a(i) = 0 : end : end : The better way to do it
|
z***e 发帖数: 5393 | 22 matlab那一行的实现是谁去做的?什么做的?
【在 i*****l 的大作中提到】 : 哦,那为什么我写一个QR分解还要到处找代码?而matlab只需要一行就搞定了? : 还有最基本的稀疏矩阵的乘法,c++下面就可找到好几种不同的写法。这个时候怎么决 : 定那个最好? : 为了不同的目的,需要不同的数据结构,往往搜索需要的程序或者库函数就需要好久, : 当然 : 如果你啥都自己写,那我就没话说了。
|
t****t 发帖数: 6806 | 23 多半是FORTRAN了……
【在 z***e 的大作中提到】 : matlab那一行的实现是谁去做的?什么做的?
|
d***q 发帖数: 1119 | 24 标准库又不包括这种数值计算用的库
用lapack倒是不错 |
c*****z 发帖数: 182 | 25 好像底层还是调样lapack
【在 z***e 的大作中提到】 : matlab那一行的实现是谁去做的?什么做的?
|
c*****z 发帖数: 182 | 26 侧重点不同把,vc下面数据库,多媒体都做的很强,很好使的阿
它好像不太重视科学计算和可视化这块,可能因为挣不到钱把
【在 i*****l 的大作中提到】 : 哦,那为什么我写一个QR分解还要到处找代码?而matlab只需要一行就搞定了? : 还有最基本的稀疏矩阵的乘法,c++下面就可找到好几种不同的写法。这个时候怎么决 : 定那个最好? : 为了不同的目的,需要不同的数据结构,往往搜索需要的程序或者库函数就需要好久, : 当然 : 如果你啥都自己写,那我就没话说了。
|
A**********e 发帖数: 3102 | 27 matlab 用惯了,真觉得用 C++ 是种折磨啊。matlab 相比之下,虽然有 pascal 的
憨态可掬,但是还是比 c/c++ 要 elegent 多了。
C# 也是这个优点:elegent。
么决
久,
【在 c*****z 的大作中提到】 : 侧重点不同把,vc下面数据库,多媒体都做的很强,很好使的阿 : 它好像不太重视科学计算和可视化这块,可能因为挣不到钱把
|
t****t 发帖数: 6806 | 28 看你怎么定义elegant了. 做点矩阵运算, 当然elegant. 做个叠代, 奇慢无比.
我用了6年matlab, 觉得matlab用起来真是折磨啊. matlab我好歹也算是专家了, 里面
的汇编我也拆开来大致看过的.
C#没用过.
我倒是觉得perl写起来elegant呢. 虽然很多人抱怨perl写的程序让人看不懂, 其实我
觉得那是写程序的人故意的. 我用matlab或者C++一样可以把程序写得让人看不懂.
【在 A**********e 的大作中提到】 : matlab 用惯了,真觉得用 C++ 是种折磨啊。matlab 相比之下,虽然有 pascal 的 : 憨态可掬,但是还是比 c/c++ 要 elegent 多了。 : C# 也是这个优点:elegent。 : : 么决 : 久,
|
r*******y 发帖数: 290 | 29 matlab is good
but matlab really sucks in drawing
the speed is too damn slow
【在 A**********e 的大作中提到】 : matlab 用惯了,真觉得用 C++ 是种折磨啊。matlab 相比之下,虽然有 pascal 的 : 憨态可掬,但是还是比 c/c++ 要 elegent 多了。 : C# 也是这个优点:elegent。 : : 么决 : 久,
|
A**********e 发帖数: 3102 | 30 对。我用 matlab 在三维空间里求三维向量间的组合距离并统计的那几行,我自己
写了一堆注释,还经常冷不丁看不懂。那个复杂无比又特简洁的向量化,呵呵。
【在 t****t 的大作中提到】 : 看你怎么定义elegant了. 做点矩阵运算, 当然elegant. 做个叠代, 奇慢无比. : 我用了6年matlab, 觉得matlab用起来真是折磨啊. matlab我好歹也算是专家了, 里面 : 的汇编我也拆开来大致看过的. : C#没用过. : 我倒是觉得perl写起来elegant呢. 虽然很多人抱怨perl写的程序让人看不懂, 其实我 : 觉得那是写程序的人故意的. 我用matlab或者C++一样可以把程序写得让人看不懂.
|
|
|
A**********e 发帖数: 3102 | 31 我用 matlab 画过外围线,优化过之后还是慢得惊人。凡是牵扯到 strel 的都贼慢。
【在 r*******y 的大作中提到】 : matlab is good : but matlab really sucks in drawing : the speed is too damn slow
|
g*****g 发帖数: 34805 | 32 这东西要看average joe写出来的程序是否看得懂了。
matlab的还行,perl的我真是看不懂。还是java最好,哈哈。
【在 t****t 的大作中提到】 : 看你怎么定义elegant了. 做点矩阵运算, 当然elegant. 做个叠代, 奇慢无比. : 我用了6年matlab, 觉得matlab用起来真是折磨啊. matlab我好歹也算是专家了, 里面 : 的汇编我也拆开来大致看过的. : C#没用过. : 我倒是觉得perl写起来elegant呢. 虽然很多人抱怨perl写的程序让人看不懂, 其实我 : 觉得那是写程序的人故意的. 我用matlab或者C++一样可以把程序写得让人看不懂.
|
L******r 发帖数: 199 | 33 我觉得Perl里面有的人为了表现自己的水平,往往把一般人写个十行八行的写成一句就
搞定,一般水平不够的自然看不明白,看得明白的,自己也不会那么去写,因为维护起
来有时候真的很吃力。
。
【在 t****t 的大作中提到】 : 看你怎么定义elegant了. 做点矩阵运算, 当然elegant. 做个叠代, 奇慢无比. : 我用了6年matlab, 觉得matlab用起来真是折磨啊. matlab我好歹也算是专家了, 里面 : 的汇编我也拆开来大致看过的. : C#没用过. : 我倒是觉得perl写起来elegant呢. 虽然很多人抱怨perl写的程序让人看不懂, 其实我 : 觉得那是写程序的人故意的. 我用matlab或者C++一样可以把程序写得让人看不懂.
|