【问题标题】:How to interpolate a matrix in MATLAB?如何在 MATLAB 中插值矩阵?
【发布时间】:2016-06-20 18:32:40
【问题描述】:

我有以下数据。第一行和第一列(突出显示)是已为其生成其余元素的两个参数。我希望将此矩阵转换为 50 x 50 矩阵,在行和列之间插入数据。

我已尝试按以下方式插入第二列,

x=[100 300 500 700];
y=[-20 -184 -315.2 -412];
z = linspace(x(1),x(4),50);
yi=interp1(x,y,z,'cubic'); 

但是,我的问题是,我无法弄清楚如何同时对行进行插值并获得整个矩阵。

欢迎任何帮助/建议。

数据如下;

    30  60  90
100 -20 -45 -80.5
300 -184    -215    -225.4
500 -315.2  -254    -339
700 -412    -419    -488

【问题讨论】:

  • 你的意思是interp2
  • @AnderBiguri 是的,我知道 interp2 是我应该使用的功能。但是,我不确定如何使用它。我正在浏览文档但无济于事。

标签: matlab matrix interpolation


【解决方案1】:

您的数据是两个变量 (f(x,y)) 的函数,因此您需要使用 interp2 而不是 interp1

% Populate the data that you already have
rows =  [100, 300, 500 700];
cols = [30, 60, 90];

data = [-20      -45    -80.5
        -184    -215    -225.4
        -315.2  -254    -339
        -412    -419    -488];

% Interpolate this at 100 points in each direction
[newcols, newrows] = meshgrid(linspace(cols(1), cols(end)), ...
                              linspace(rows(1), rows(end)));

% Perform the bicubic interpolation
newdata = interp2(cols, rows, data, newcols, newrows, 'bicubic')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多