我在 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);
答案 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