Matlab:用true / false值替换每个元素(逻辑数组)

时间:2015-01-31 19:58:02

标签: matlab for-loop conditional-statements

我一直想要遍历一个数组/矩阵(而不是为了练习/学习而使用关系运算符),如果满足一个简单条件,则将每个元素替换为true或false值,最后是一个逻辑类的结果数组。

vec = [5 9 3 4 6 11];

[r,c] = size(vec); 

vecempty = zeros(r,c);

for i = 1:r;
    for j = 1:c
        if vec(i,j) > 5;
            vecempty(i,j) = true;
        else
            vecempty(i,j) = false;
        end
    end
end

fprintf('Your truth matrix: \n\n\n') 

disp(vecempty) 

total = 0;

for i = 1:r;
    for j = 1:c;
        total = total + vecempty(i,j);
    end
end

fprintf('Total number of truth elements: %d \n\n\n', total) 

对于我的" vec(i,j)"条件,我最初有他们" = 1"或" = 0",但我猜这只是提供数字本身,而不是真或假。因此我选择了" = true"或" = false",但我想知道,为什么我返回的数组(vecempty)不会显示为一类逻辑?

遵循相同的值:

Vectruth = vec > 5

结果" Vectruth"作为逻辑类返回。我很困惑,如果我回来"真的"或"假"在我的循环中,为什​​么我的结果向量不会被显示为逻辑类,当使用" vec> 5",它显示为逻辑类?谢谢。

1 个答案:

答案 0 :(得分:1)

您可以通过调用

来初始化逻辑数组
vecempty = false(r,c);

而不是

vecempty = zeros(r,c);

当然,如果合适,false可以替换为true