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