matlab中unique函数的细节,如补充所示,求出的值未去掉相同的,非要复制在用unique才行,求解决

clear all
i=1;j=1;
for x0=-3*pi:1:3*pi
[xmin(i),fmin(i)]=fminsearch('sin(x)',x0);
i=i+1;
end
xmin;
a=[xmin]';
unique(a)

>> format long
>> unique(a)

ans =

-7.854022936626359
-7.854008364979142
-7.853962459214630
-7.853961661686135
-7.853956060485562
-1.570832606176130
-1.570817781434266
-1.570803787900968
-1.570794324512290
-1.570777793238641
-1.570765845946615
4.712359798708134
4.712376234683454
4.712380064794505
4.712389340602086
4.712396538579182
4.712413212173234
4.712417419591130
10.995586834043745
如上,事实上他们都是不同的,只是你的显示精度不高,以为是一样的。从理论上他们的正弦值也应是有微小区别的。

当然你可以规定小数点后4位的精度,然后进行判断。程序如下:
b=num2str(a,'%.4f');
c=str2num(b);
unique(c)
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网