创建单个值的数组

时间:2010-08-27 03:07:24

标签: arrays matlab

我正在使用matlab并且想要检查列向量是否等于另一个带有3dp,为此我正在尝试创建一个满0.001的数组并检查它是否大于或等于。有没有比for循环更简单的方法来创建这个数组?

4 个答案:

答案 0 :(得分:10)

  

有没有比for循环更简单的方法来创建这个数组?

是的,使用

ones(size, 1) * myValue

例如

>> ones(5,1)*123

ans =

   123
   123
   123
   123
   123

答案 1 :(得分:4)

所以,请告诉我这是否正确。

您有2个向量ab,每个向量都有N个元素。您想检查每个i<=Nabs(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中比较数字是绝对的噩梦,但我也只是新手。关键是,你在比较时可能会遇到浮点比较问题,所以在尝试任何事情时都要记住这一点(如果我错了,或者有一个漂亮的解决方法,请有人纠正我。)