我正在尝试创建一个用作索引的线性向量。我需要在索引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。 我正在敲打键盘 - 谢谢!
答案 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, []);