如何在MATLAB中生成形如[2,1,1,...,1,2]的1×50矩阵?
解决MATLAB生成1×50的[2,1,...,1,2]向量问题
嘿,你的思路方向完全正确!而且完全不需要用for循环,MATLAB有很多简洁的向量构造技巧,帮你轻松搞定那个首尾为1、中间全0的辅助向量,下面给你几种实用的方法:
方法一:初始化全0向量后修改首尾
先创建一个1×50的全0向量,再把第一个和最后一个元素设为1:
% 构造辅助向量 mask = zeros(1, 50); mask([1, end]) = 1; % 首尾赋值为1 % 生成目标向量 result = ones(1, 50) + mask;
方法二:直接拼接向量
把首元素1、中间48个0、尾元素1直接拼接起来,一步得到辅助向量:
mask = [1, zeros(1, 48), 1]; result = ones(1, 50) + mask;
方法三:更直接的目标向量构造
其实你可以跳过辅助向量,直接生成目标向量——首尾放2,中间放48个1:
result = [2, ones(1, 48), 2];
这种方法最直观,毕竟目标向量的结构就是首尾为2,其余为1,直接拼接反而更省心。
MATLAB天生擅长向量级别的操作,这类简单的向量构造完全不需要循环,上面的方法都比循环更高效易读~
内容的提问来源于stack exchange,提问作者ghostcoder
相关产品推荐
相关产品推荐

