Arrays 创建单个值的数组

Arrays 创建单个值的数组,arrays,matlab,Arrays,Matlab,我正在使用matlab,想用3dp检查一个列向量是否等于另一个列向量,为此我尝试创建一个满0.001的数组,并检查它是否大于或等于。有没有比for循环更简单的方法来创建这个数组 > P>你可以考虑“查找”命令,比如: a = [ 0.005, -0.003 ]; x = find(a > 0.001); FWIW,我发现在MATLAB中比较数字绝对是一场噩梦,但我对它也只是新手。关键是,在进行比较时,您可能会遇到浮点比较问题,因此在尝试任何操作时请记住这一点(如果我在这方面有错误,请有人

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

> P>你可以考虑“查找”命令,比如:

a = [ 0.005, -0.003 ];
x = find(a > 0.001);
FWIW,我发现在MATLAB中比较数字绝对是一场噩梦,但我对它也只是新手。关键是,在进行比较时,您可能会遇到浮点比较问题,因此在尝试任何操作时请记住这一点(如果我在这方面有错误,请有人纠正我,或者有一个很好的解决方法。)

示例:

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
a=rand(1000,1);
b=兰特(1000,1);
idx=(绝对值(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

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

您有两个向量,
a
b
,每个向量都有
N
元素。您要检查,对于每个
i
有没有比for循环更简单的方法来创建这个数组

是的,使用

ones(size, 1) * myValue
比如说

>> ones(5,1)*123

ans =

   123
   123
   123
   123
   123

要处理比较问题,可以使用
eps
。一般来说,浮点比较影响所有语言,而不仅仅是MATLAB。您可以阅读一些有关数值方法的资料,因为在大量操作之后,数值误差可能会累积。例如,在某些情况下,它是
sqrt(eps)
@错误的:当然,我知道
eps
,我知道浮点比较,但是
eps
并不总是有帮助。谢谢你。
>> ones(5,1)*123

ans =

   123
   123
   123
   123
   123