[問題] 我剛學C++ 想請問這行code我該怎麼改Q_Q

作者: nofun (USD10)   2019-06-18 17:11:37
程式碼(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 比較不熟 所以有點不太明白的地方
想請各位幫我看一下 如果是你們會怎麼改 才是最正確?
作者: nh60211as   2019-06-18 17:16:00
首先自己手刻一個矩陣跟convolution function,這樣就差不多完成了
作者: RishYang (Rish)   2019-06-18 19:30:00
你的問題太廣或是太不明確,你是要學新的語言還是純粹認為matlab太慢
作者: chuegou (chuegou)   2019-06-18 19:44:00
是要C還是C++呀
作者: yilanP (Train Station)   2019-06-19 09:39:00
要算2D convolution要快的話,還要混著cuda跑才快
作者: CarbonK (HTYISABUG)   2019-06-19 18:39:00
C 學比較快,但要算矩陣你還是學 C++ 用 armadillo 吧
作者: ckvir (ckvir)   2019-06-19 18:52:00
c 和 c++ 差很多c++ 比較多標準的lib 可以用c 常常要手刻 例如 c 連常用的hasht也沒有hashtable
作者: RishYang (Rish)   2019-06-19 19:29:00
用cuda或是OpenCL才能真正改善問題,matlab的實作很多都是C++,且matlab也有JIT與nVidia GPU加速工具箱,你真的不必非要C++不可。
作者: as30385438 (LCT)   2019-06-21 11:38:00
matlab的矩陣運算是很快的喔,用C自己刻不見得比他好

Links booklink

Contact Us: admin [ a t ] ucptt.com