我正在尝试将 Matlab 遗留代码转换为 C 程序。我通过了通常的流程,但遇到了一个我不明白的构建错误:
Nfft = 8;
[~,coh] = size(h); // h = array of 168 elements;
display(coh); // displays 168
if mod(coh,Nfft)~=0,
h1 = [h zeros(1,Nfft-mod(coh,Nfft))];
else
h1 = h;
end
这在 Matlab 中按预期工作。但是当我通过 codegen 运行它时(删除显示后),我h1 = [h zeros(1,Nfft-mod(coh,Nfft))];
在错误消息的行中收到一个错误:
无法从 double 转换为 struct。
我意识到在 matlab 代码中,它没有通过这部分代码。(因为 168%8 == 0)。
任何想法如何解决这一问题?
编辑:经过一番调查,我意识到我正在h
从 .mat 文件中读取数据,这可能是原因。从 .mat 文件中读取的数据是否被视为结构?如果是这种情况,那么也许我需要先将每个元素转换为双精度?似乎有点hacky..