【问题标题】:Extracting data values from MATLAB meshgrid output从 MATLAB 网格输出中提取数据值
【发布时间】:2016-09-22 22:16:18
【问题描述】:

我需要从 MATLAB 的网格中提取特定坐标的数据值,我的代码如下:

PaarX=Paar(:,1);
PaarX1=PaarX(1:20:length(PaarX));
PaarY=Paar(:,2);
PaarY1=PaarY(1:20:length(PaarY));
x=PaarX;
y=PaarY;
v=Paar(:,3);
[xi, yi]=meshgrid(PaarX1, PaarY1);
vq=griddata(x, y, v, xi, yi, 'cubic');

PaarXPaarYv 是曲面的 X、Y 和 Z 值,Z 值是要插值的值。 PaarX1PaarY1 是网格网格中使用的值,每 20 个值取一次(在此之前数组太大)。我需要从特定的 X 和 Y 坐标中提取 vq 中的插值 Z 值。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    据我了解你的问题,你需要这个:

    nx = 3; % <= length(PaarX1)
    ny = 4; % <= length(PaarY1)
    fprintf('the interpolated value at x=%g and y=%g is %g',PaarX1(nx),PaarY1(ny),vq(ny,nx))
    

    或者你可以转置矩阵vq

    vq = vq.';
    fprintf('the interpolated value at x=%g and y=%g is %g',PaarX1(nx),PaarY1(ny),vq(nx,ny))
    

    vq(ny,nx)y 是第一个)是因为您使用了meshgrid 函数。对于ndgrid 函数,您可以使用vq(nx,ny) 形式的矩阵元素访问(x 是第一个)(但我不确定它是否适用于griddata)。

    【讨论】:

    • 不幸的是,我收到此错误:索引超出矩阵维度。插值错误(第 18 行) fprintf('x=%g 和 y=%g 处的插值是 %g',PaarX1(n1),PaarY1(n2),vq(n1,n2))
    • 我认为上面是因为索引不包含X和Y坐标值。
    • 好的!我看到你使用meshgrid。我已经更正了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多