如果声明比较:矩阵和数字

时间:2015-11-26 13:12:11

标签: matlab

我有一个矩阵A = [0 4 5 3]和数字B=4。 不,我想做以下事情。

if A<B
    disp('Something')
end

但是这不起作用,Matlab不会将矩阵与数字进行比较。我该怎么解决这个问题呢。

3 个答案:

答案 0 :(得分:4)

Matlab 将矩阵(或者更确切地说,数组)与数字进行比较,该操作的结果将只是另一个数组(类型为logical)。 if - 和for中的布尔测试 - 语句需要单个逻辑才能运行。您需要使用logicalany()数组转换为单个值(如果任何元素为true),则返回trueall() {如果所有元素都是true,则会返回true

例如:

if any(A<B)
    disp('Something');
end

了解更多信息:

>> A = [0 4 5 3]; B = 4;
>> A < B
ans =
     1     0     0     1

>> any(A<B)
ans =
     1

>> all(A<B)
ans =
     0

答案 1 :(得分:0)

@EelkeSpaak答案的补充,

如果要在每次语句有效时重复操作,可能需要以下脚本:

for ii=find(A<B)
    disp(num2str(A(ii)));
end

这取决于你想要达到的目标。

答案 2 :(得分:0)

A = [0 4 5 3]B=4的比较结果将是一个逻辑矩阵:

>> A = [0 4 5 3]
A =
     0     4     5     3
>> B=4
B =
     4
>> A<B
ans =
     1     0     0     1
>> class(A<B)
ans =
logical

当你在if语句中使用矩阵时,如果它是非空的并且所有元素都是非零的,那么它将被视为是

>> if A<B, disp('somthing'); end
>> B = 10
B =
    10
>> if A<B, disp('somthing'); end
somthing

因此,这取决于您对此比较的预期行为。您可以使用其他功能,例如allanyisequal