我一直致力于使用Matlab-coder创建c代码。我有一个名为melfunction的函数,它为下面代码的第20行提供了错误。
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); < --------------------- SOLUTION CHANGE TO p = zeros(256)
m = zeros(1,12); < --------------------- SOLUTION CHANGE TO p = zeros(12)
for i=1:size(xx,1)
y=xx(i,:);
s=y'.*hamming(256);
t=abs(fft(s));
t=t.^2;
p(i,:) = t; < --------------------------- ERROR HERE
c1=dctcoef*log(bank*t(1:129));
c2=c1.*w';
m(i,:)=c2;
end
错误消息如下所示
使用melfunction时出错(第20行) 索引超出数组维度。索引值2超出数组p的有效范围[1-1]
TESTINPUTS错误(第2行) D0 = melfunction(x)的
如果我拿出答案,我会在找到答案后发布。
答案 0 :(得分:1)
好的,所以我搞砸了一下,发现我相信我不知道如何正确初始化p和m。为了在Matlab-Coder的另一部分添加这些代码行,我错误地初始化了p和m变量。这是原始初始化。
p = zeros(256);
m = zeros(12);
这也是我改变它的原因。
sendArrival