将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,

我想加速我的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,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的矩阵,其他的是双精度矩阵。。。