在Octave中绘制表面会导致表面不均匀?

时间:2014-06-17 14:42:48

标签: matlab plot octave

我试图以八度为单位绘制附加数据。第1列是X值,第2列是Y值,最后是Z值。

我正在运行此脚本:

xVec = reshape(mat(:,1),25,9); 
yVec = reshape(mat(:,2),25,9); 
zVec = reshape(mat(:,3),25,9); 
surf(xVec,yVec,zVec);
axis([0.15 0.85 0.15 0.85]);
set(gca, 'XTick',0.20:0.05:0.80);
set(gca, 'YTick',0.20:0.05:0.80);

但是我不断得到一个很难理解的不平整表面。这是为什么?我错过了什么? plotted surface

数据:

0.15 0.15 40.802
 0.15 0.2 40.673
 0.15 0.25 40.526
 0.15 0.3 40.83
 0.15 0.35 40.862
 0.15 0.4 40.652
 0.15 0.45 40.924
 0.15 0.5 40.774
 0.15 0.55 41.088
 0.15 0.6 40.749
 0.15 0.65 41.099
 0.15 0.7 41.753
 0.15 0.75 41.607
 0.15 0.8 41.911
 0.15 0.85 41.537
 0.2 0.15 39.809
 0.2 0.2 39.884
 0.2 0.25 40.595
 0.2 0.3 40.497
 0.2 0.35 40.863
 0.2 0.4 41.325
 0.2 0.45 40.916
 0.2 0.5 40.431
 0.2 0.55 40.583
 0.2 0.6 40.858
 0.2 0.65 40.548
 0.2 0.7 41.668
 0.2 0.75 41.863
 0.2 0.8 41.499
 0.2 0.85 41.903
 0.25 0.15 39.894
 0.25 0.2 39.686
 0.25 0.25 40.227
 0.25 0.3 40.625
 0.25 0.35 40.572
 0.25 0.4 41.034
 0.25 0.45 40.828
 0.25 0.5 40.802
 0.25 0.55 40.196
 0.25 0.6 40.493
 0.25 0.65 41.265
 0.25 0.7 40.963
 0.25 0.75 41.023
 0.25 0.8 41.396
 0.25 0.85 41.596
 0.3 0.15 39.546
 0.3 0.2 40.216
 0.3 0.25 39.535
 0.3 0.3 39.945
 0.3 0.35 40.108
 0.3 0.4 40.726
 0.3 0.45 40.187
 0.3 0.5 41.279
 0.3 0.55 40.747
 0.3 0.6 41.122
 0.3 0.65 40.91
 0.3 0.7 40.292
 0.3 0.75 41.04
 0.3 0.8 41.287
 0.3 0.85 42.023
 0.35 0.15 38.693
 0.35 0.2 40.269
 0.35 0.25 40.561
 0.35 0.3 40.536
 0.35 0.35 40.268
 0.35 0.4 39.947
 0.35 0.45 40.259
 0.35 0.5 40.146
 0.35 0.55 41.048
 0.35 0.6 40.263
 0.35 0.65 40.875
 0.35 0.7 41.281
 0.35 0.75 40.836
 0.35 0.8 41.322
 0.35 0.85 41.734
 0.4 0.15 39.321
 0.4 0.2 39.103
 0.4 0.25 39.694
 0.4 0.3 40.529
 0.4 0.35 40.272
 0.4 0.4 39.826
 0.4 0.45 40.224
 0.4 0.5 40.808
 0.4 0.55 40.66
 0.4 0.6 40.003
 0.4 0.65 41.626
 0.4 0.7 41.549
 0.4 0.75 41.523
 0.4 0.8 41.408
 0.4 0.85 41.545
 0.45 0.15 39.428
 0.45 0.2 39.53
 0.45 0.25 39.988
 0.45 0.3 40.039
 0.45 0.35 40.075
 0.45 0.4 40.206
 0.45 0.45 40.946
 0.45 0.5 41.027
 0.45 0.55 41.214
 0.45 0.6 40.98
 0.45 0.65 40.874
 0.45 0.7 41.483
 0.45 0.75 41.151
 0.45 0.8 41.123
 0.45 0.85 40.528
 0.5 0.15 39.477
 0.5 0.2 39.62
 0.5 0.25 40.265
 0.5 0.3 39.61
 0.5 0.35 40.109
 0.5 0.4 40.232
 0.5 0.45 40.212
 0.5 0.5 40.861
 0.5 0.55 39.665
 0.5 0.6 41.225
 0.5 0.65 40.577
 0.5 0.7 40.62
 0.5 0.75 41.244
 0.5 0.8 40.977
 0.5 0.85 41.753
 0.55 0.15 39.033
 0.55 0.2 39.769
 0.55 0.25 40.164
 0.55 0.3 40.351
 0.55 0.35 40.592
 0.55 0.4 40.227
 0.55 0.45 40.14
 0.55 0.5 40.734
 0.55 0.55 40.429
 0.55 0.6 40.701
 0.55 0.65 40.849
 0.55 0.7 40.596
 0.55 0.75 41.481
 0.55 0.8 41.27
 0.55 0.85 40.755
 0.6 0.15 38.944
 0.6 0.2 39.76
 0.6 0.25 39.051
 0.6 0.3 40.009
 0.6 0.35 39.84
 0.6 0.4 40.072
 0.6 0.45 41.282
 0.6 0.5 40.606
 0.6 0.55 40.98
 0.6 0.6 41.141
 0.6 0.65 40.111
 0.6 0.7 41.627
 0.6 0.75 41.798
 0.6 0.8 41.196
 0.6 0.85 41.35
 0.65 0.15 39.457
 0.65 0.2 39.38
 0.65 0.25 40.26
 0.65 0.3 40.142
 0.65 0.35 39.935
 0.65 0.4 40.496
 0.65 0.45 39.862
 0.65 0.5 40.665
 0.65 0.55 40.187
 0.65 0.6 40.955
 0.65 0.65 39.834
 0.65 0.7 40.641
 0.65 0.75 41.162
 0.65 0.8 41.028
 0.65 0.85 41.54
 0.7 0.15 38.938
 0.7 0.2 39.803
 0.7 0.25 39.485
 0.7 0.3 39.8
 0.7 0.35 39.459
 0.7 0.4 39.895
 0.7 0.45 40.203
 0.7 0.5 40.222
 0.7 0.55 40.176
 0.7 0.6 41.01
 0.7 0.65 41.433
 0.7 0.7 41.651
 0.7 0.75 41.018
 0.7 0.8 41.185
 0.7 0.85 41.216
 0.75 0.15 39.182
 0.75 0.2 38.856
 0.75 0.25 39.992
 0.75 0.3 40.005
 0.75 0.35 39.613
 0.75 0.4 39.526
 0.75 0.45 40.232
 0.75 0.5 40.45
 0.75 0.55 41.157
 0.75 0.6 40.578
 0.75 0.65 41.106
 0.75 0.7 41.252
 0.75 0.75 40.773
 0.75 0.8 41.207
 0.75 0.85 42.219
 0.8 0.15 39.33
 0.8 0.2 39.463
 0.8 0.25 39.435
 0.8 0.3 40.252
 0.8 0.35 39.819
 0.8 0.4 39.826
 0.8 0.45 40.506
 0.8 0.5 41.031
 0.8 0.55 40.666
 0.8 0.6 41.306
 0.8 0.65 40.674
 0.8 0.7 41.489
 0.8 0.75 40.956
 0.8 0.8 41.61
 0.8 0.85 41.099
 0.85 0.15 39.247
 0.85 0.2 38.983
 0.85 0.25 39.051
 0.85 0.3 39.098
 0.85 0.35 39.617
 0.85 0.4 40.541
 0.85 0.45 40.091
 0.85 0.5 40.435
 0.85 0.55 40.55
 0.85 0.6 40.204
 0.85 0.65 40.682
 0.85 0.7 40.965
 0.85 0.75 41.063
 0.85 0.8 41.113
 0.85 0.85 41.577

2 个答案:

答案 0 :(得分:3)

嗯,据我所知,你的数据X值每15点变化一次,Y和Z也是如此。 看来你正在重塑不正确。

尝试对代码进行下一个非常小的更改:

xVec = reshape(data(:,1),15,15); 
yVec = reshape(data(:,2),15,15); 
zVec = reshape(data(:,3),15,15); 
surf(xVec,yVec,zVec);
axis([0.15 0.85 0.15 0.85]);
set(gca, 'XTick',0.20:0.05:0.80);
set(gca, 'YTick',0.20:0.05:0.80);

输出:

enter image description here

答案 1 :(得分:1)

(这只适用于matlab,因此我不知道octav是否有任何不同,但我不这么认为。)

问题是冲浪需要一种非常特殊的输入格式,它不适用于矢量。

你想要的功能是griddata,它可以在偶数网格上插入任何3D或4D输入数据(这将是所需的冲浪输入)。

它有点像这样:

xVec=mat(:,1);
yVec=mat(:,2);
zVec=mat(:,3);
gridpoints = 100;
[xi, yi] = meshgrid(linspace(min(xVec),max(xVec),gridpoints),linspace(min(xVec),max(xVec),gridpoints));
zi = griddata(xVec,yVec,zVec,xi,yi);
surf(xi,yi,zi);