【发布时间】:2016-08-25 16:08:56
【问题描述】:
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
【问题讨论】:
-
您确定注释掉的行是正确的吗?您确定要使用
i=-2和j=-2作为循环的起始值吗? -
这是给我的代码,不幸的是我不知道它来自哪里。
-
那么最好为您的任务/问题编写自己的代码!
-
您的评论表明您显然知道生成的数组的最终大小。所以我要结束这个,就像你问的那样不清楚。
-
它不是python,for循环清楚地使用matlab语法。 ;)