我用matlab和C代码(matlab编译器,codegen)得到了不同的结果。最终,我发现功能eig()
的不同结果带来了不同。
这是我的matlab代码:
function [yrecon] = SSA(x1, prevBPM)
L = 215;
N = length(x1(1,:));
K = N-L+1;
X = zeros(L,K);
I = 9;
tmp=cell(I,L,K);
%X_group = cell(I,L,K);
X_group = coder.nullcopy(tmp);
x = x1(2,:);
for i=1:L
X(i,1:K) = x(1,i:i+K-1);
end
S = X*X' ;
[U,autoval] = eig(S);
yrecon=real(U);
end
如何在Matlab和Matlab从Codegen生成的C代码中获得完全相同的U
和autoval
?
BTW:在c代码中,U
和autoval
很复杂,但在matlab中都是真实的。如何解决?