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的降序对它们进行排序;当它变成时,按升序排序。谢谢!绘图是好的,然后我可以平滑它使用移动平均值和结果是相当不错的。再次感谢!