Matlab中如何通过for循环将随机生成的小向量值填充到大向量指定位置
解决向量循环填充的问题
我来帮你搞定这个循环填充的需求,核心是找到每次循环里y对应X位置的规律,这样就能用for循环轻松实现了。
首先咱们先明确每次循环的填充位置规律(i从1到3):
- y的第1个值 → X的
2*i位置(i=1时是2,i=2时是4,i=3时是6) - y的第2个值 → X的
2*i + 1位置(i=1时是3,i=2时是5,i=3时是7) - y的第3个值 → X的右侧倒数第
2*i个位置(i=1时是15,i=2时是13,i=3时是11) - y的第4个值 → X的右侧倒数第
2*i -1个位置(i=1时是16,i=2时是14,i=3时是12)
基于这个规律,修正后的代码如下:
X = zeros(16,1); for i = 1 : 3 y = rand(4,1); % 填充左侧的两个位置 X(2*i) = y(1); X(2*i + 1) = y(2); % 填充右侧的两个位置 right_pos_4 = 16 - 2*(i-1); % 先确定y(4)的位置 X(right_pos_4) = y(4); X(right_pos_4 - 1) = y(3); end
代码解释:
- 左侧填充:用
2*i和2*i+1来定位,每次循环i增加1,位置就自动往后跳2个,正好匹配你要的X(2)→X(4)→X(6),以及X(3)→X(5)→X(7)的顺序。 - 右侧填充:先计算y(4)的位置,用
16 - 2*(i-1),这样第一次循环得到16,第二次得到14,第三次得到12;y(3)的位置就是y(4)的位置减1,刚好是15、13、11,完全符合需求。
你可以在循环里加一行disp(X);来实时查看每次填充后的X,验证位置是否正确。
内容的提问来源于stack exchange,提问作者Sajjad
相关产品推荐
相关产品推荐

