将matlab编码器的矩阵乘法索引为C
我想加速我的euler/Ornstein–Uhlenbeck代码,尝试加速for循环,使用matlab编码器将其转换为C。然而,索引似乎有问题,但我看不出问题出在哪里。非常感谢将matlab编码器的矩阵乘法索引为C,c,matlab,matrix,matlab-coder,C,Matlab,Matrix,Matlab Coder,我想加速我的euler/Ornstein–Uhlenbeck代码,尝试加速for循环,使用matlab编码器将其转换为C。然而,索引似乎有问题,但我看不出问题出在哪里。非常感谢 function [x,t] = Quick_Euler(N_t,N,A,G,dt) x = zeros(N,N_t); t = zeros(1,N_t); for i = 2 : N_t n = randn([N,1]); x(1:N,
function [x,t] = Quick_Euler(N_t,N,A,G,dt)
x = zeros(N,N_t);
t = zeros(1,N_t);
for i = 2 : N_t
n = randn([N,1]);
x(1:N,i) = x(1:N,i-1) + dt^(.5)*G*n + (A*x(1:N,i))*dt;
t(1,i) = t(1,i-1) + dt;
end
end
编译器:
>> coder -build Quick_Euler.prj
??? Size mismatch (size [:? x 1] ~= size [:? x :?]).
<br>Mismatched varying and fixed sizes indicate a probable run-time error.
If this diagnostic is incorrect, use indexing to explicitly make the varying size fixed.
>编码器-快速构建\u Euler.prj
??? 大小不匹配(大小[:?x 1]~=大小[:?x:?])。
不匹配的可变和固定大小表明可能存在运行时错误。
如果此诊断不正确,请使用索引明确固定可变大小。
您的输入参数是什么维度?我的经验(使用较旧的Matlab relase)是,使用编码器不会加快您的计算速度(在许多情况下甚至会减慢计算速度)。如果你想提高速度,要么尽可能多地矢量化你的代码,要么用C/Fortran编写并用作mex函数。嗨,丹尼尔,我的输入参数是:a和G是N*N的矩阵,其他的是双精度矩阵。。。