Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 阵列和matlab编码器的问题_C_Arrays_Matlab Coder - Fatal编程技术网

C 阵列和matlab编码器的问题

C 阵列和matlab编码器的问题,c,arrays,matlab-coder,C,Arrays,Matlab Coder,我一直在用Matlab编码器创建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);

我一直在用Matlab编码器创建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 
函数[c]=melfunction(x)
bank=melbankm(242568000,0,0.4,'t');
银行=满(银行);%full()将稀疏矩阵转换为完整矩阵
银行=银行/最大(银行(:);
w=1+6*sin(π*[1:12]./12);
w=w/最大值(w);
xx=双(x);
xx=过滤器([1-0.9375],1,xx);
xx=enframe(xx,256,80)
p=0(1256);<------------解决方案更改为p=0(256)
m=零(1,12);<------------溶液更改为p=0(12)
对于i=1:尺寸(xx,1)
y=xx(i,:);
s=y'.*汉明(256);
t=abs(fft(s));
t=t.^2;
p(i,:)=t;<------------------------------------这里出错
c1=dctcoef*log(组*t(1:129));
c2=c1.*w';
m(i,:)=c2;
结束
错误消息如下所示

使用MEL函数时出错(第20行) 索引超过数组维度。索引值2超出数组p的有效范围[1-1]。

测试输入错误(第2行) d0=功能(x)


如果我想出一个答案,我会在找到答案后发布。

好的,所以我把它弄乱了一点,发现我认为我不知道如何正确初始化p和m。为了给Matlab编码器的另一部分添加这些代码行,我错误地初始化了p和m变量。这是最初的初始化

p=0(1256);
m=零(1,12)

这也是我改变的

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

该行不会导致该错误。请看:我已经更新了完整的代码。我没有添加实际发生故障的部分,只是变量。。。。。。我所指的代码行也是我认为我必须改变的地方。。。。。。很抱歉造成混淆关于数据大小和形状的一个或多个假设是错误的。您已经将
p
初始化为行向量,然后尝试在第二次循环迭代中寻址它没有的行
2
。因此,您的索引超出了数组维度。@excaza您知道有什么方法可以解决这个问题吗。