不规则间隔线性指数

时间:2016-04-29 17:40:01

标签: matlab indexing sequence vectorization fill

我正在尝试创建一个用作索引的线性向量。我需要在索引x = 700,1000,1100,2100,2300,2400,2900中填写这些起始数字之间的数字1:99。我尝试过使用各种循环,我无法保存每100个数字循环内的数组中的序列。我很想学习如何不使用循环并做到这一点。

所以xfinal应该看起来像 - 700,701,702 ... 799,1000,1001,1002 ... 1099,1100,1101,1102,... 1199,2100,2101,2102,...... 2199 ,2300,2301,2302,...... 2399,2400,2401,2402,...... 2499,2900,2901,2902,...... 2999。 我正在敲打键盘 - 谢谢!

2 个答案:

答案 0 :(得分:2)

让我们用bsxfun保存键盘可怕的循环 -

x = [700, 1000, 1100, 2100, 2300, 2400, 2900];
offset_arr = 0:99;
xfinal = reshape(bsxfun(@plus,x,offset_arr.'),1,[])

答案 1 :(得分:2)

键盘版本不那么紧凑,可能效率较低,略显可怕,没有可怕的循环:

x = [700, 1000, 1100, 2100, 2300, 2400, 2900];
intermediate = 0:99;

tmp = repmat(intermediate, length(x), 1) + repmat(x.', 1, length(intermediate));
x_new = reshape(tmp.', 1, []);