数组和matlab编码器的问题

时间:2018-04-12 16:14:57

标签: c arrays matlab-coder

我一直致力于使用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)的

如果我拿出答案,我会在找到答案后发布。

1 个答案:

答案 0 :(得分:1)

好的,所以我搞砸了一下,发现我相信我不知道如何正确初始化p和m。为了在Matlab-Coder的另一部分添加这些代码行,我错误地初始化了p和m变量。这是原始初始化。

p = zeros(256); m = zeros(12);

这也是我改变它的原因。

sendArrival