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
答案 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个元素的长矢量。