此代码中的Matlab矩阵维度

时间:2016-08-25 16:08:57

标签: matlab octave

C和nx的尺寸是多少? Matlab中的代码。循环为nx生成49个元素,但另一行表示16个? x是尺寸为M,N的输入图片。

function y=sri1(x)

[M,N]=size(x);
%e=zeros(M,N);
for i=1:2
   for j=1:2
      y(i:2:2*M,j:2:2*N)=x;
   end
end

T=5;
ix=[-1 -1 1 1];
iy=[-1 1 -1 1];
mx=[0 0 1 1];
my=[0 1 0 1];
cnt=1;
for i=-2:4
   for j=-2:4
      nx(cnt)=i;ny(cnt)=j;cnt=cnt+1;
  end
end
%nx=[0 1 1 0 -1 -1  0  1 2 2 0 1 -1 -1 2 2];
%ny=[0 0 1 1  0  1 -1 -1 0 1 2 2 -1  2 -1 2];

th=8;
for i=T:M-T
   for j=T:N-T
      for k=1:4
      C(:,k)=diag(x(i+ix(k)+nx,j+iy(k)+ny));
    end
      r=diag(x(i+nx,j+ny));
      s=diag(x(i+mx,j+my));
      if det(C'*C)==0|var(s)<th
         a=ones(4,1)/4;
      else
         a=inv(C'*C)*(C'*r);
         %a=fun(C,r);
      end
      y(2*i,2*j)=sum(a.*s); 
      if y(2*i,2*j)<0|y(2*i,2*j)>255
         a=ones(4,1)/4;y(2*i,2*j)=sum(a.*s);
        end
   end
end

1 个答案:

答案 0 :(得分:1)

要查找向量和矩阵的大小,我建议您查找命令size

例如:

size( C )
size( nx )

您也可以自己打印对象,或使用MATLAB中的调试工具来帮助确定您的程序是否正常工作。分别查看不同的部分,例如逐个检查 x 的指定部分的外观以及对角线的外观。

在您的情况下,似乎 nx 正确地有49个条目。每个循环将运行7次,每个输入为-2,-1,0,1,2,3,4。

C 似乎最终为49乘4.每次在内循环中,矩阵的第1列到第4列被设置为49 x的49 x的对角线 x 矩阵。这当然是49个元素的长矢量。