MATLAB - 如何(优雅地)对矩阵进行插值?

标签 matlab interpolation

假设我有一个包含 3 个元素的元胞数组;第一个和第三个单元格是矩阵,而第二个单元格是空的:

>> P
P = 
  [3x8 double]    []    [3x8 double]

我可以通过对矩阵中的每个单独元素进行插值来填充第二个矩阵,但肯定有一种方法可以一次性完成此操作?

编辑:平均值肯定适合 P。但假设我有类似的东西

>> Q
Q = [3x8 double]    [3x8 double]     [3x8 double]    []    []    [3x8 double]

因此,鉴于我的四个已知矩阵,我可以使用更高级的插值(如样条曲线)来填充缺失的矩阵。

最佳答案

您可以在对 INTERP1 的单个函数调用中执行所有插值,但它需要将数据设置为所需的形状,然后在完成后返回:

%# cell array of matrices (some are missing)
sz = [3 8];         %# all of same size
Q = {ones(sz), [], 3*ones(sz), [], [], 6*ones(sz)};

%# indices of missing matrices
idx = ~cellfun(@isempty,Q);
x = 1:numel(Q);

%# merge cells into a multidimensional matrix, call INTERP1, then divide back
QQ = Q(idx);
QQ = permute(cat(3,QQ{:}), [3 1 2]);
QQ = interp1(x(idx), QQ, x);            %# one call to interpolation function
QQ = reshape(num2cell(permute(QQ, [2 3 1]), [1 2]), 1,[]);

请记住,矢量化有时会以可读性为代价......

关于MATLAB - 如何(优雅地)对矩阵进行插值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10842158/

相关文章:

python - scipy.interpolate.interpnd 提示 'Delaunay' 对象没有属性 'simplices'

string - 可以在 Scala 中使用自定义字符串插值字符吗?

matlab - 使用MatLab计算信号:noise ratio

math - 使用模式在 MATLAB 中创建向量

matlab - 查找一组值在矩阵中的位置

r - R中的二维线性插值

matlab - 使用通配符 MatLab 读取单个图像文件

matlab - 每当除以 0 或出现 Inf 值时停止或暂停运行 MatLab

algorithm - 插值搜索有时间复杂度还是空间复杂度?

python - 三次样条插值法