matlab中的嵌套函数

时间:2014-09-21 12:10:02

标签: 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;

工作正常,但如果在此方法中使用,则会出现一些错误,表示

  

???试图访问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]

1 个答案:

答案 0 :(得分:0)

原始变量'b'是1x10,但在行中:

e=CC(dim(1,i:10),dim(1,j:10));

你实际上调用了函数CC,它获得了两个变量,并再次将它们视为ab,但现在它们是不同的:

dim(1,i:10)现在(在CC内)名为a

dim(1,j:10)现在(在CC内)名为b

由于循环,当j = 2时,dim(1,j:10)为1x9,因此b函数内的CC变量{{1}}。这就是错误的原因。

相关问题