【发布时间】:2015-06-07 20:15:32
【问题描述】:
我在 MATLAB 中有3 x n(n 是随机数)矩阵。 n=13 的示例:
M = [40, 0, 0, 0, 41, 0, 0, 0, 0, 0, 41.6, 0, 20;
20, 0, 0, 0, 23, 0, 0, 0, 0, 0, 23, 0, 189;
102, 0, 0, 0, 192, 0, 0, 0, 0, 0, 96, 0, 21];
每行中两个非零数之间的零个数是随机的,但这个数在行之间总是相同的。我想像这样插入每一行:
Minter = [40, 40.25, 40.5, 40.75, 41, 41.1, 41.2, 41.3, 41.4, 41.5, 41.6, 30.8, 20;
20, 20.75, 21.5, 22.25, 23, 23, 23, 23, 23, 23, 23, 106, 189;
102, 124.5, 147, 169.5, 192, 176, 160, 144, 128, 112, 96, 58.5, 21];
所以我想用线性插值方法获得的数字替换零。
我编写了自己的函数来执行此操作。我正在使用 MATLAB 函数 find 搜索数字索引 >0,然后根据两个索引之间的差异(来自 find 函数)并取决于第一个非零的右和左数字(来自原始矩阵),我计算这两个非零数字之间的数字,并用原始矩阵中的这些数字替换零。我正在分别处理每一行。
这种方法工作正常,但速度不是很快。 MATLAB中有更快的方法吗?我尝试了interp1 函数,但没有成功。
【问题讨论】:
-
那我写的对你有帮助吗?成功了吗?
-
回声!回声!..... e....ch....o.
-
很抱歉迟到了!是的,效果很好!非常感谢!!!
-
没问题。这里公认的做法是接受我的回答。您可以通过转到我的答案,在顶部和左侧,在向上和向下箭头下方...单击复选标记图标。祝你好运!
标签: matlab linear-interpolation