首页 > 解决方案 > 在 For 循环中定义变量

问题描述

当在 for 循环中满足 if 语句时,我试图重新定义变量。这是不允许的吗?

a = [0,0,0;0,1,0;0,0,0];
[row,col] = size(a);

x0 = -1;
x1 = -1;

for i = 1:row
    for ii = 1:col
        if a(i,ii) ~= 0
            x0 = i;
            break
        end
    end
end

for v = 1:row-1
    for vv = 1:col
        if a(row - v,vv) ~= 0
            x1 = v;
            break
        end
    end
end

在这种情况下,x0 和 x1 不会被覆盖。为什么?

标签: matlab

解决方案


在你的循环中,当 if 语句触发时,
a(row-v,vv) ~= 0
当 v = 1 时为真,因为 row-1 = 2,yielding a(2,2),然后你将 v 设置为 1。我相信你的代码,你会想要做

for v = 0:row-1
    for vv = 1:col
        if a(row - v,vv) ~= 0
            x1 = row - v;
            break
        end
    end
end

请注意,您还希望将第一行的范围更改为 0:row-1 以便您点击每一行;row-0 将产生最后一个数组索引:3


推荐阅读