[问题] 我刚学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