C Matlab高效代码生成
我从Matlab编码器生成C代码。 我有一个函数如下C Matlab高效代码生成,c,matlab,matlab-deployment,C,Matlab,Matlab Deployment,我从Matlab编码器生成C代码。 我有一个函数如下 function C = foo( A, B ) %#codegen for j=1:100, C = C+A(j); end end 此函数在c中的代码是 void foo(float A[100],B,float* C){ for(j=0;j<100;j++){ *C+=A[j]; } } void foo(浮点A[100],B,浮点*C){ 对于(j=0;j我不理解整个故事,但是
function C = foo( A, B ) %#codegen
for j=1:100,
C = C+A(j);
end
end
此函数在c中的代码是
void foo(float A[100],B,float* C){
for(j=0;j<100;j++){
*C+=A[j];
}
}
void foo(浮点A[100],B,浮点*C){
对于(j=0;j我不理解整个故事,但是为什么不把你的matlab代码改成实际使用B
作为开始,然后告诉我们接下来会发生什么,比如
function C = foo( A, B ) %#codegen
for j=1:B,
C = C+A(j);
end
end
我猜Matlab编码器需要矢量化代码:
请重试此选项:
function C = foo( A, B ) %#codegen
C = sum(A(1:100));
end
你可能需要优化你的Matlab代码,使之更像你在C中想要的。Matlab代码在A中访问100个元素;这就是生成的C正在复制的元素。如果你只想让它进入B
,那么你必须在Matlab中进行
% MATLAB
function C = foo( A, B ) %#codegen
for j=1:B,
C = C+A(j);
end
end
我相信您的MATLAB代码将返回错误,因为C变量未定义。如何从MATLAB生成C代码?在OP的示例中,C
是标量的…似乎他想要C=sum(A(1:B));
% MATLAB
function C = foo( A, B ) %#codegen
for j=1:B,
C = C+A(j);
end
end