不规则间隔线性索引
Irregular-Spaced Linear Index
我正在尝试创建一个线性向量用作索引。我需要在索引 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。
我正在敲键盘 - 谢谢!
让我们用 bsxfun
-
保存 keyboard 和 scary 循环
x = [700, 1000, 1100, 2100, 2300, 2400, 2900];
offset_arr = 0:99;
xfinal = reshape(bsxfun(@plus,x,offset_arr.'),1,[])
一个不太紧凑,可能效率较低,没有可怕循环的键盘版本稍微可怕:
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, []);
我正在尝试创建一个线性向量用作索引。我需要在索引 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。 我正在敲键盘 - 谢谢!
让我们用 bsxfun
-
x = [700, 1000, 1100, 2100, 2300, 2400, 2900];
offset_arr = 0:99;
xfinal = reshape(bsxfun(@plus,x,offset_arr.'),1,[])
一个不太紧凑,可能效率较低,没有可怕循环的键盘版本稍微可怕:
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, []);