我有一个矩阵
但是这样不行,Matlab 不会将矩阵和数字进行比较。我该怎么解决?
A = [0 4 5 3]
和数字B=4
。
现在我想要做以下操作。if A<B
disp('Something')
end
但是这样不行,Matlab 不会将矩阵和数字进行比较。我该怎么解决?
A = [0 4 5 3]
和数字B=4
。
现在我想要做以下操作。if A<B
disp('Something')
end
if
和for
语句中进行布尔测试需要基于一个单一逻辑型变量进行操作。您需要通过使用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
如果您想每次语句有效时重复执行某个操作,您可能需要以下脚本:
for ii=find(A<B)
disp(num2str(A(ii)));
end
这取决于你想要实现什么。
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
。