在每个矩阵行中找到最小数量

时间:2013-07-15 22:16:22

标签: matlab

我正在尝试编写代码以从'距离'矩阵中找到最小数字,不包括矩阵中的零。

distance=[0    0.44    0.40    0.63    0.89
0.44    0       0.44    0.72    1.00
0.40    0.44    0       0.28    0.56
0.63    0.72    0.28    0       0.28
0.89    1.00    0.56    0.28    0]

for  i=1:Nodes
    for  j=1:Nodes
        if (distance(i,j)~=0)

        [mini(i,:)]=[min(distance(i,:))];
        end
    end
end

任何帮助表示赞赏!谢谢!

2 个答案:

答案 0 :(得分:5)

正确答案是:

d = distance;
d(~d) = inf;
mini = min(d);

首先摆脱零条目,然后让Matlab计算每行的最小值。

你应该总是试着在Matlab中避免循环。

答案 1 :(得分:0)

虽然我建议使用@ypnos提供的矢量化解决方案,但这是使循环工作的一种方法。

mini = inf(1,Nodes)
for  i=1:Nodes
    for  j=1:Nodes
        if (distance(i,j)~=0) %Consider using if i~=j if you want the distance to 'other' points
            mini(j)=min(distance(i,j),mini(j));
        end
    end
end
相关问题