我正在使用matlab并且想要检查列向量是否等于另一个带有3dp,为此我正在尝试创建一个满0.001的数组并检查它是否大于或等于。有没有比for循环更简单的方法来创建这个数组?
答案 0 :(得分:10)
有没有比for循环更简单的方法来创建这个数组?
是的,使用
ones(size, 1) * myValue
例如
>> ones(5,1)*123
ans =
123
123
123
123
123
答案 1 :(得分:4)
所以,请告诉我这是否正确。
您有2个向量a
和b
,每个向量都有N
个元素。您想检查每个i<=N
,abs(a(i)-b(i)) <= 0.001
是否。
如果这是正确的,您需要:
vector_match = all(abs(a-b) <= 0.001);
vector_match
是一个布尔值。
答案 2 :(得分:1)
示例:
a = rand(1000,1);
b = rand(1000,1);
idx = ( abs(a-b) < 0.001 );
[a(idx) b(idx)]
» ans =
0.2377 0.23804
0.0563 0.056611
0.01122 0.011637
0.676 0.6765
0.61372 0.61274
0.87062 0.87125
答案 3 :(得分:0)
您可以考虑使用'find'命令,例如:
a = [ 0.005, -0.003 ];
x = find(a > 0.001);
FWIW,我发现在MATLAB中比较数字是绝对的噩梦,但我也只是新手。关键是,你在比较时可能会遇到浮点比较问题,所以在尝试任何事情时都要记住这一点(如果我错了,或者有一个漂亮的解决方法,请有人纠正我。)