使用Matlab Coder生成C代码时遇数组错误求助
解决MATLAB Coder生成C代码时
melfunction函数的报错问题 我之前处理过MATLAB Coder代码生成时的类似维度适配问题,你遇到的第20行报错可以通过调整数组初始化的维度定义快速解决:
报错的原代码行(第20行):
p = zeros(1,256);
修改后的正确代码行:
p = zeros(256);
为什么这个修改能解决问题?
MATLAB Coder在生成C代码时,对数组维度的一致性要求比原生MATLAB更严格:
zeros(1,256)创建的是1×256的行向量,但后续算法逻辑大概率默认需要的是256×1的列向量(这也是MATLAB中zeros(n)默认生成的维度)- 改成
zeros(256)后,数组维度更贴合后续运算的需求,避免了Coder在类型推断和代码转换阶段出现维度不匹配的错误
完整相关代码片段参考:
function [ c ] = melfunction( x ) bank=melbankm(24,256,8000,0,0.4,'t'); bank=full(bank); %full() convert sparse matrix to full matrix bank=bank/max(bank(:)); w=1+6*sin(pi*[1:12]./12); w=w/max(w); xx=double(x); xx=filter([1-0.9375],1,xx); xx=enframe(xx,256,80) % 原报错行 % p = zeros(1,256); % 修改后的正确行 p = zeros(256); m = zeros(1,12); ...
内容的提问来源于stack exchange,提问作者Cedrick Baker
相关产品推荐
相关产品推荐

