如何从CSV文件导入粗糙的2D表面,插入并导出精制的CSV文件OCTAVE

时间:2017-01-19 01:33:08

标签: matlab octave

我对OCTAVE非常陌生。非常感谢任何帮助。

我有一个带有二维z值点数组的CSV文件。这些点沿X和Y轴均匀分布,并对应于存储z值的行/列。(即第一列,第一行,z = 4对应于--->>(0,0 ,4))

问题:

如何导入z值的csv文件并将其用作二维网格上的点?那么,如何在更精细的二维网格上插入这些值,然后导出精炼的二维数组呢?

我的网格是一个正方形,X& Y从0到9,步长为1,我想使步长为0.1(100个数据点到10000个数据点)。

我知道这是一个使用griddata,meshgrid,linspace或interp2的简单问题......但我不知道如何完成它。

请任何人能帮助我

1 个答案:

答案 0 :(得分:0)

我创建了一个文件derek.csv:

8 4 9
4 5 6
8 9 3
5 3 4

现在您可以使用dlmread从GNU Octave加载它,创建新网格(示例为0.5间距)并调用interp2:

Z = dlmread ("derek.csv", " ");
[XX, YY] = meshgrid (1:0.5:columns(Z), 1:0.5:rows(Z));
newZ = interp2 (Z, XX, YY)

给出了

 8.0000   6.0000   4.0000   6.5000   9.0000
 6.0000   5.2500   4.5000   6.0000   7.5000
 4.0000   4.5000   5.0000   5.5000   6.0000
 6.0000   6.5000   7.0000   5.7500   4.5000
 8.0000   8.5000   9.0000   6.0000   3.0000
 6.5000   6.2500   6.0000   4.7500   3.5000
 5.0000   4.0000   3.0000   3.5000   4.0000