[其他] 想請問一下 Matlab 與c的差別~

看板MATLAB作者 (WHY)時間9年前 (2015/04/22 16:58), 9年前編輯推噓15(15085)
留言100則, 14人參與, 最新討論串1/1
請問一下 matlab與c主要的差別在哪? 用C打得出來的,matlab也可以嗎? 用matlab打的出來的,C也可以嗎? 因為只會C, 所以老師說要用matlab打時想說可不可以用C來做@.@ 感【激不盡~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.123.115.123 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1429693106.A.D14.html

04/22 17:27, , 1F
兩者都是圖靈完全(誤)
04/22 17:27, 1F

04/22 18:50, , 2F
迴圈什麼的matlab都可以寫 只要想要會動用c是OK的
04/22 18:50, 2F

04/22 18:51, , 3F
阿看錯 你是本來用matlab要用c 那我就不確定了
04/22 18:51, 3F

04/22 18:51, , 4F
有可能你們學的東西需要用到不少matlab內建函式 難道這
04/22 18:51, 4F

04/22 18:52, , 5F
些你都要自己在c重寫?還是你找得到別人建好的函式?
04/22 18:52, 5F

04/22 18:52, , 6F
以我個人是比較建議你乾脆用matlab 畢竟你都會用c了 真
04/22 18:52, 6F

04/22 18:53, , 7F
不行直接在matlab寫迴圈還是會動的
04/22 18:53, 7F

04/22 23:17, , 8F
你想問哪方面的差距?
04/22 23:17, 8F

04/23 12:32, , 9F
一個是編譯式,一個是直譯式,完全不一樣的邏輯啊!
04/23 12:32, 9F

04/23 14:07, , 10F
能用matlab就用吧 不要折磨自己
04/23 14:07, 10F
由於很多題目,教授叫我們用程式打,C或Matlab都可,但是我matlab學得很淺,印象中 我當初用matlab,都是曲線圖之類的,但用C就是很多程式(像是99乘法,猜數字等等的), 想說兩者感覺差很多,但為什麼可以用C或用matlab來做?~ ※ 編輯: puppyulove (140.123.115.123), 04/23/2015 14:39:51

04/23 14:51, , 11F
這只是個工具, 用啥都好, 用手算畫也可以~
04/23 14:51, 11F

04/23 14:55, , 12F
速度是最大的考量 matlab優點在豐富的library 不用什麼都
04/23 14:55, 12F

04/23 14:56, , 13F
自己coding, 但是執行速度matlab跟c完全不在同一個檔次
04/23 14:56, 13F

04/23 15:24, , 14F
用於驗證想法matlab是很好的工具 但是要開發程式最後還是C
04/23 15:24, 14F
嗯嗯, 再問個問題 matlab是採用圖形用戶介面對八~ 所以意思是說所有的數據都是由 圖形來呈現嗎? 例如要用matlab做99乘法表要怎麼呈現阿~ 新手發問Q_Q ※ 編輯: puppyulove (140.123.115.123), 04/23/2015 18:33:49

04/23 23:06, , 15F
先用就對了,matlab好用,C會coding到死
04/23 23:06, 15F

04/23 23:09, , 16F
當老師說用C或matlab時,可以不要選C來折磨自己
04/23 23:09, 16F

04/23 23:32, , 17F
簡單來說matlab可以即時檢視結果、除錯
04/23 23:32, 17F

04/23 23:33, , 18F
又有圖形能力、方便的GUI使用以及各種toolbox
04/23 23:33, 18F

04/23 23:34, , 19F
用C你可能要去找一堆library然後還要編譯安裝
04/23 23:34, 19F

04/23 23:34, , 20F
MATLAB都幫你準備好了
04/23 23:34, 20F

04/23 23:35, , 21F
matlab做99乘法就 for i=1:9,for j=1:9,disp(
04/23 23:35, 21F

04/23 23:36, , 22F
['i*j=', num2str(i*j)]), end, end
04/23 23:36, 22F

04/23 23:39, , 23F
更正[num2str(i),'x',num2str(j),'=',num2str(i*j)]
04/23 23:39, 23F

04/24 09:25, , 24F
99乘法表 kron(1:9,(1:9)')
04/24 09:25, 24F

04/24 09:26, , 25F
用到兩個for就不是matlab的精隨了 基本上跟c一樣了
04/24 09:26, 25F

04/24 09:29, , 26F
c: for(int i=1;i<=9;i++) for(int j=1;i<=9;j++)
04/24 09:29, 26F

04/24 09:29, , 27F
cout << i << '*' << j << '=' << i*j << endl;
04/24 09:29, 27F

04/24 11:58, , 28F
只是要print string 如果只output結果當然那樣就好
04/24 11:58, 28F

04/24 12:01, , 29F
也可以這樣 [a,b] = meshgrid(1:9, 1:9);
04/24 12:01, 29F

04/24 12:01, , 30F
arrayfun(@(x, y) [num2str(x), '*', num2str(y),
04/24 12:01, 30F

04/24 12:01, , 31F
'=', num2str(x*y)], a, b, 'UniformOutput', false
04/24 12:01, 31F

04/24 12:01, , 32F
)
04/24 12:01, 32F
恩恩,所以說C能做的Matlab大致都能瞜,而且matlab還比c簡單多了就對了~ 那c跟matlab比有甚麼好處呢? ※ 編輯: puppyulove (140.123.115.123), 04/24/2015 12:10:18

04/24 12:13, , 33F
04/24 12:13, 33F

04/24 12:13, , 34F
程式易讀性、向量矩陣運算等都是MATLAB勝出比較多
04/24 12:13, 34F

04/24 12:16, , 35F
向量矩陣運算,我是指撰寫程式上
04/24 12:16, 35F

04/24 13:36, , 36F
你各別寫個矩陣乘法 就知道差別了
04/24 13:36, 36F
還有 24 則推文
04/26 10:14, , 61F
的期末project
04/26 10:14, 61F

04/26 10:16, , 62F
我當時是已有八年Matlab經驗 C不到半年
04/26 10:16, 62F

04/26 11:09, , 63F
我覺得s大根本沒看過費式數列的效能比較,差到四千
04/26 11:09, 63F

04/26 11:09, , 64F
多倍
04/26 11:09, 64F

04/26 11:36, , 65F
http://bit.ly/1EEbuQK 向量化的費式數列。
04/26 11:36, 65F

04/26 11:37, , 66F
我沒用過,有沒有人有興趣測一下時間?
04/26 11:37, 66F

04/26 12:16, , 67F
樓上這是一個矩陣向量化去算各自費式數列的值,不是
04/26 12:16, 67F

04/26 12:16, , 68F
單一個數的費式數列向量化
04/26 12:16, 68F

04/26 12:43, , 69F
jatj 可以大概講一下演算法嗎?如果沒辦法用空間換時間
04/26 12:43, 69F

04/26 12:43, , 70F
那是沒救沒錯。
04/26 12:43, 70F

04/26 12:45, , 71F
celestialgod的費式數列是什麼意思?不能像oversky0一樣用
04/26 12:45, 71F

04/26 12:45, , 72F
公式解嗎?
04/26 12:45, 72F

04/26 13:15, , 73F
oversky0的連結是向量化運算整數矩陣的每一個元素
04/26 13:15, 73F

04/26 13:15, , 74F
的費式數列,等於一次跑跟矩陣元素一樣多個的費式
04/26 13:15, 74F

04/26 13:15, , 75F
數列,說真的那樣不如建立一個最大數,再用參照位置
04/26 13:15, 75F

04/26 13:15, , 76F
找出來對應的費式數列值。
04/26 13:15, 76F

04/26 13:16, , 77F
最大數的費式數列
04/26 13:16, 77F

04/26 13:23, , 78F
反正他還是遞迴就是會比c慢上許多。
04/26 13:23, 78F

04/26 13:28, , 79F
oversky0給的連結是直接用公式,沒有用到遞迴。
04/26 13:28, 79F

04/26 13:28, , 80F
matlab用這個公式是有可能比c慢,但應該不會慢到十倍以上
04/26 13:28, 80F

04/26 13:47, , 81F
最後一行還是call itself.....
04/26 13:47, 81F

04/26 13:51, , 82F
我誤會了.... 抱歉,不過公式解確實會快一點,我例
04/26 13:51, 82F

04/26 13:51, , 83F
子舉的不夠好
04/26 13:51, 83F

04/26 13:55, , 84F
Computation Time Comparison Between Matlab and C
04/26 13:55, 84F

04/26 13:55, , 85F
++... ,2012
04/26 13:55, 85F

04/26 13:55, , 86F
超過四百倍。
04/26 13:55, 86F

04/26 14:15, , 87F
你說的四百倍是指遞迴公式嗎? 你算到多大的n啊?
04/26 14:15, 87F

04/26 14:21, , 88F
四千倍大概可以參考這邊 http://julialang.org/
04/26 14:21, 88F

04/26 14:40, , 89F
樓上的連結真的是太慘烈了……
04/26 14:40, 89F

04/26 14:57, , 90F
julia某些比較實在不適合
04/26 14:57, 90F

04/26 15:01, , 91F
或許可以嘗試用PSO做比較,兩者在較多Swarms下
04/26 15:01, 91F

04/26 15:02, , 92F
如果目標函數是難以向量化的函數,會差上幾百倍
04/26 15:02, 92F

04/26 15:02, , 93F
例如:design的optimal,分類的AUC, accurate rate
04/26 15:02, 93F

04/27 04:22, , 94F
給原po應該要了解各個語言的優缺點 適時選擇適當語言
04/27 04:22, 94F

04/27 15:45, , 95F
我確實沒遇過那種MATLAB要跑超久的project
04/27 15:45, 95F

04/27 15:46, , 96F
我c也沒有很精通
04/27 15:46, 96F

04/27 15:47, , 97F
所以我也只是就我曾經遇過的問題來說
04/27 15:47, 97F

04/27 15:48, , 98F
還在coding c的時候MATLAB應該已經寫好且跑完了
04/27 15:48, 98F

04/27 15:49, , 99F
沒有說一定是這樣,但非特殊情形的時候,我覺得是這樣啦
04/27 15:49, 99F

04/28 14:19, , 100F
換個角度想 乘機會多學一套軟體也不錯啊
04/28 14:19, 100F
文章代碼(AID): #1LDsAoqK (MATLAB)
文章代碼(AID): #1LDsAoqK (MATLAB)