Matlab 绘制给定点的V形函数
我有下面的矩阵,其中的行是从函数中采样的点Matlab 绘制给定点的V形函数,matlab,plot,interpolation,Matlab,Plot,Interpolation,我有下面的矩阵,其中的行是从函数中采样的点 f = [ -3.7850 -11.5240 -3.7753 -11.4822 -3.7680 -11.5427 -3.7592 -11.5607 -3.7576 -11.5461 -3.7454 -11.5887 -3.7386 -11.4070 -3.7358 -11.4450 -3.7289 -11.5511 -3.7254 -11.3713 -3.7122
f = [ -3.7850 -11.5240
-3.7753 -11.4822
-3.7680 -11.5427
-3.7592 -11.5607
-3.7576 -11.5461
-3.7454 -11.5887
-3.7386 -11.4070
-3.7358 -11.4450
-3.7289 -11.5511
-3.7254 -11.3713
-3.7122 -11.4515
-3.6820 -11.5582
-3.6758 -11.5946
-3.6732 -11.5823
-3.6679 -11.6365
-3.6487 -11.3525
-3.6424 -11.2745
-3.6322 -11.3478
-3.6235 -11.6379
-3.6159 -11.6308
-3.5619 -11.1980
-3.5550 -11.2284
-3.5544 -11.5925
-3.5147 -11.6578
-3.5041 -11.6756
-3.4860 -11.1550
-3.4654 -11.6341
-3.4550 -11.1329
-3.3802 -11.6701
-3.3691 -11.1083
-3.3541 -11.0790
-3.3485 -11.5887
-3.3006 -11.6384
-3.2481 -11.5570
-3.2459 -11.0268
-3.2441 -10.9314
-3.2301 -11.5225
-3.2270 -10.8832
-3.1543 -10.8612
-3.1528 -11.5490
-3.1167 -11.5021
-3.1102 -10.8255
-3.0645 -11.5618
-2.9967 -11.5420
-2.9898 -10.8136
-2.9645 -10.7107
-2.9211 -11.4197
-2.9175 -10.6389
-2.8558 -10.6015
-2.8327 -11.5108
-2.7768 -11.4501
-2.7392 -10.5492
-2.7217 -11.4230
-2.6988 -10.4724
-2.6235 -11.3226
-2.6196 -11.3806
-2.5772 -10.4518
-2.5458 -10.4317
-2.5014 -10.3176
-2.4832 -11.3822
-2.4778 -10.2456
-2.4029 -11.2907
-2.3723 -10.3002
-2.3590 -11.2911
-2.3491 -10.2110
-2.2756 -11.2318
-2.2554 -10.1204
-2.2542 -10.1411
-2.2181 -11.2300
-2.1982 -9.9584
-2.1645 -9.7938
-2.1541 -11.1682
-2.1476 -9.8235
-2.1451 -9.9205
-2.1280 -10.0064
-2.1269 -9.8947
-2.0898 -9.7926
-2.0781 -11.1293
-1.9985 -11.0985
-1.9249 -11.0443
-1.8220 -11.0419
-1.7359 -11.0043
-1.6924 -10.9775
-1.6049 -10.9579
-1.5275 -10.9339
-1.4757 -10.9113
-1.4122 -10.8854
-1.3245 -10.8908
-1.2936 -10.7893
-1.2091 -10.8121
-1.1575 -10.8064
-1.1237 -10.7105
-1.0571 -10.7724
-1.0217 -10.7096
-0.9717 -10.6984
-0.9447 -10.7103
-0.9120 -10.6687
-0.8908 -10.6670]
通过
绘图(f(:,1),f(:,2),“+”)进行绘图
很明显,函数具有V形。但是,我需要连续地绘制它,但是执行绘制(f(:,1),f(:,2))
会产生一个锯齿形函数。我怎样才能画出我想要的点?(除了手动排序之外)您可以尝试旋转数据,对其进行排序并将其旋转回来。e、 g:
theta = -1;
R = [cos(theta) -sin(theta);sin(theta) cos(theta)];
f2 = f*R;
f3 = sortrows(f2);
f4 = f3*R';
plot(f4(:,1),f4(:,2),'-',f(:,1),f(:,2),'+')
你可以调整θ来改变角度,这会影响排序顺序,我只是猜测-1是正确的。除了下面@PatrickStewart的安全答案外,如果你确定它确实是一个V(在这种情况下,凸包只是一个三角形,你可以按正确的顺序绘制三个极值点),你可以试着看一看. 编辑:我看了你的数据。因为您的数据很嘈杂,所以它不那么琐碎。无论如何,我会把这个留在这里,以防万一。我可能会尝试拟合一些合理的函数(对于旋转的数据集),我不明白为什么要绘制一条线,它正好穿过散乱数据的所有点。我们怎么知道确切的顺序?也许你是在寻找合适的方法呢?顺序应该是:在函数开始运行之前,按x的降序对它们进行排序;当它变成时,按升序排序。谢谢!绘图是好的,然后我可以平滑它使用移动平均值和结果是相当不错的。再次感谢!