我有一个方法,使用的是内部方法,每个方法都可以独立工作,但当一个内部使用时发生错误
function [cov]=CC(a,b)
meana=mean(a);
meanb=mean(b);
entity=0;
for k=1:10
entity=entity+((a(1,k)-meana) * (b(1,k)-meanb));
end
cov=entity;
工作正常,但如果在此方法中使用,则会出现一些错误,表示
???试图访问b(1,10);索引越界,因为大小(b)= [1,9] ==>中的错误CC在9
entity=entity+((a(1,k)-meana) * (b(1,k)-meanb));
==>中的错误CM在8
e=CC(dim(1,i:10),dim(1,j:10));
函数CM
如下所示
function [covM]=CM(a,b)
dim=[a b];
for i=1:2
for j=1:2
e=CC(dim(1,i:10),dim(1,j:10));
end
end
covM=e;
那么这句话是什么" ??? Attempted to access b(10); index out of bounds because numel(b)=9 "
意思? b
为[1,10]
而不是[1,9]
答案 0 :(得分:0)
原始变量'b'是1x10,但在行中:
e=CC(dim(1,i:10),dim(1,j:10));
你实际上调用了函数CC,它获得了两个变量,并再次将它们视为a
,b
,但现在它们是不同的:
dim(1,i:10)
现在(在CC
内)名为a
dim(1,j:10)
现在(在CC
内)名为b
。
由于循环,当j = 2时,dim(1,j:10)
为1x9,因此b
函数内的CC
变量{{1}}。这就是错误的原因。