在现有矩阵的连续值之间插入等间距值

时间:2014-05-28 14:05:38

标签: arrays matlab

我在 matlab 工作。我有一个行向量 in和一个表示步长的标量变量no_step。对于每个i = 1:size(in,2)-1,我想在no_step之间插入in(1,i) and in(1,i+1)等间距值,并生成新的矩阵out。换句话说,我想在不使用循环的情况下实现以下循环。

注意: - 确保1/no_step终止小数

n = size(in,2);
new_n = n+no_step*(n-1);
out  = zeros(1,new_n);
k = 1;
for i = 1:n-1
    temp = (in(1,i+1) - in(1,i))/no_step;
    temp2 = in(1,i):temp:(in(1,i+1) - temp);
    out(1,k:k+no_step) = temp2;
    k =k+no_step+1;
end
out(new_n) = in(n);

1 个答案:

答案 0 :(得分:1)

使用interp1

out = interp1(1:numel(in), in, 1:1/no_step:numel(in));

示例:

>> in = [2 3 5 9];
>> no_step = 2;
>> out = interp1(1:numel(in), in, 1:1/no_step:numel(in))
out =
    2.0000    2.5000    3.0000    4.0000    5.0000    7.0000    9.0000