看板 C_and_CPP 關於我們 聯絡資訊
程式碼(Code): % 假設係數(done) % 假設初始條件 C=[1 2 3 4 . . . 6000]; % 其他假設 t=1200;% 計算次數 %% ======== % 建立F矩陣 gg=[0.4975 0.03 0.4725]; hh=eye(1700,6000); aa=conv2(hh,gg,'same'); aa=[aa]; gg=[0.497625 0.03 0.47235]; hh=eye(601,6000); bb=conv2(hh,gg,'same'); bb=[bb]; bb(1,:)=[]; bb=circshift(bb,[0,1699]); gg=[0.497 0.03 0.473]; hh=eye(3701,6000); %要刪除第一行(4400-1087-448=2867) cc=conv2(hh,gg,'same'); cc=[cc]; cc(1,:)=[]; cc=circshift(cc,[0,2299]); F=sparse([aa;bb;cc]); %% ======== % 開始計算 for k=1:t D=F*C% 計算D矩陣 C=D;% 用D矩陣取代C矩陣 end 補充說明:這是matlab程式碼 我剛開始接觸C 也嘗試用過MATLAB內建的matlab-coder去把CODE碼改成C的形式 但剛接觸C 比較不熟 所以有點不太明白的地方 想請各位幫我看一下 如果是你們會怎麼改 才是最正確? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.239.253.42 (香港) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1560849099.A.4C5.html
nh60211as: 首先自己手刻一個矩陣跟convolution function,這樣 06/18 17:16
nh60211as: 就差不多完成了 06/18 17:16
RishYang: 你的問題太廣或是太不明確,你是要學新的語言還是純粹認 06/18 19:30
RishYang: 為matlab太慢 06/18 19:31
原因是MATLAB太慢了= = ...我聽人說用C的話 比MATLAB快幾倍、幾十倍~幾千倍都可能
chuegou: 是要C還是C++呀 06/18 19:44
C跟C++哪個比較快@_@ 想學比較快的那一個~ ※ 編輯: nofun (221.125.111.227 香港), 06/19/2019 01:08:04
yilanP: 要算2D convolution要快的話,還要混著cuda跑才快 06/19 09:39
CarbonK: C 學比較快,但要算矩陣你還是學 C++ 用 armadillo 吧 06/19 18:39
ckvir: c 和 c++ 差很多 06/19 18:52
ckvir: c++ 比較多標準的lib 可以用 06/19 18:52
ckvir: c 常常要手刻 例如 c 連常用的hasht也沒有 06/19 18:52
ckvir: hashtable 06/19 18:53
RishYang: 用cuda或是OpenCL才能真正改善問題,matlab的實作很多都 06/19 19:29
RishYang: 是C++,且matlab也有JIT與nVidia GPU加速工具箱,你真的 06/19 19:29
RishYang: 不必非要C++不可。 06/19 19:29
as30385438: matlab的矩陣運算是很快的喔,用C自己刻不見得比他好 06/21 11:38