我有以下功能,前提是pdist2
的代码是here。
function m = pixel_minimize_distance(x,y)
maximum = (sum(sum(pdist2(x,y))));
[r c] = size(y);
initialValue = y(1,1);
for i=1:r
for j=1:c
o = y(i,j);
y(i,j) = 0;
sum2 = (sum(sum(pdist2(x,y))));
if sum2 >= maximum
if o ~= 0
maximum = sum2;
m = o;
end
maximum = maximum;
m = initialValue;
end
y(i,j)=o;
end
end
end
现在,当我尝试运行该函数时,我没有得到如下所示的输出:
>> A=[0 0 0; 0 0 0];
>> B=[1 1 1; 1 1 1];
>> pixel_minimize_distance(A,B)
我该如何解决这个问题?
感谢。
答案 0 :(得分:2)
不要调用变量maximum
,因为它是Matlab函数(实际上是Simulink的)。
仍然,你知道吗
maximum=maximum
什么都不做?
alsodo你知道那条线
if sum2 >= maximum
什么都不做? sum2
永远不会被更新,更好的是,它有几次更新具有相同的价值。检查你的代码,它现在没什么意义。
编辑:也许有一些不同的矩阵会做某事......但是你提供的不是。
答案 1 :(得分:1)
由于您在此处阅读后将 y 的(i,j)元素替换为0:
o = y(i,j);
y(i,j) = 0;
并且由于 y 的所有条目在您的测试用例中均为正数,因此条件为:
if sum2 >= maximum
永远不会评估为 true 。连续地,输出变量 m 永远不会被初始化,因此函数不返回任何内容。
尝试将函数开头的 m 初始化为空或其他一些有意义的默认值。