matlab中的嵌套函数
我有一个方法,使用的是内部方法,每个方法都可以独立工作,但是当一个方法内部使用时,就会出现错误matlab中的嵌套函数,matlab,Matlab,我有一个方法,使用的是内部方法,每个方法都可以独立工作,但是当一个方法内部使用时,就会出现错误 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; 工作正常,但如果在该方
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]。错误==>9时抄送
entity=entity+((a(1,k)-meana)*(b(1,k)-meanab))代码>
8处==>CM的错误
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;
那么,这条语句是什么呢?试图访问b(10);由于numel(b)=9“
什么意思b
是[1,10]
不是[1,9]
原始变量“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
函数中。这就是错误的原因。错误是明确的。b是[1,9]向量。因此,无法访问索引10。此外,发生错误的原因是您正在使用循环索引减少CC(dim(…
行)中dim数组的大小