我有一个矩阵A = [0 4 5 3]
和数字B=4
。
不,我想做以下事情。
if A<B
disp('Something')
end
但是这不起作用,Matlab不会将矩阵与数字进行比较。我该怎么解决这个问题呢。
答案 0 :(得分:4)
Matlab 将将矩阵(或者更确切地说,数组)与数字进行比较,该操作的结果将只是另一个数组(类型为logical
)。 if
- 和for
中的布尔测试 - 语句需要单个逻辑才能运行。您需要使用logical
将any()
数组转换为单个值(如果任何元素为true
),则返回true
或all()
{如果所有元素都是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)
如果要在每次语句有效时重复操作,可能需要以下脚本:
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
因此,这取决于您对此比较的预期行为。您可以使用其他功能,例如all
,any
或isequal
。