matlab出错,Improper assignment with rectangular empty matrix.

问题描述:

matlab出错,Improper assignment with rectangular empty matrix.
代码如下,
function Y=evm(X)
n=length(X);
l=10;
k=n/l;
y1=ones(1,l);
y2=ones(1,l);
for i=1:l
y1(i)=log(abs(max(X(i*k-k+1:i+k))));
y2(i)=log(abs(min(X(i*k-k+1:i+k))));
end
ym1=mean(y1);
ym2=mean(y2);
s1=var(y1);
s2=var(y2);
a=pi/2/sqrt(6)*(1/s1+1/s2);
b=1-2/(1+exp(a*ym1-ym2));
Y=[a,b]; 提示错误是
? Improper assignment with rectangular empty matrix.
Error in ==> evm at 8
y1(i)=log(abs(max(X(i*k-k+1:i+k))));
大家看看是怎么回事.谢谢
1个回答 分类:综合 2014-09-22

问题解答:

我来补答
y1(i)=log(abs(max(X(i*k-k+1:i+k))));
你这样写,肯定是会有问题的,
运行一段时间后,i*k-k+1会比i+k要大,就会出现上述的问题
看你的架势 每次是想取k个数中最大和最小的那个吧
改成如下即可:
for i=1:l
y1(i)=log(abs(max(X((i*k-k+1):(i*k)))));
y2(i)=log(abs(min(X((i*k-k+1):(i*k)))));
end
 
 
展开全文阅读
剩余:2000
下一页:格子里面填一下