首页 > 解决方案 > 在 matlab 中从 3 列表创建网格

问题描述

我有一个表格,其中包含从我想要制作等高线图的 csv 中提取的值。让我们以这张表为例

tdata.x = [1;2;1;2];
tdata.y = [3;3;4;4];
tdata.z = randn(4,1);
tdata=struct2table(tdata);
>> tdata
tdata =
  4×3 table
    x    y       z   
    _    _    _______
    1    3    0.53767
    2    3     1.8339
    1    4    -2.2588
    2    4    0.86217

我想以此为轴,以便我可以使用它来绘制轮廓,所以原则上我想要一个 2x2 z 矩阵,其中行/列分别由 y 和 x 给出,在这个方向上:

 x 1        2
y                                                                           
3  0.53767  1.8339
4  -2.2588  0.86217

其中第一行是 x 坐标,第一列是 y 坐标,中间是相应的 z 值。也就是说(x,y)=(1,4)对应的z值是-2.2588。

请注意,我将将此网格用于其他事情,因此涉及插值的解决方案无效,并且数据保证在网格上给出。

标签: arraysmatlabmatlab-table

解决方案


你可以使用unstack,即

t = unstack( tdata, {'z'}, {'x'} );

这会给你这个:

在此处输入图像描述

请注意,列名都带有前缀,x因为您不能有以数字开头的列名。您应该能够x再次提取值,特别是如果它们始终是整数,那么对于您想要从这里进行的任何操作都不会太难......


推荐阅读