如何创建一个类似1 3 5 7 9 9 9 9……的列向量

采用1:3:9的表述方式,等差表述直接到9就终止,后面没有了,想把长度达到指定长度怎么办

根据参考资料中的相关知识,我们可以使用matlab的":"操作符来创建一个等差数列。下面是解决该问题的matlab代码:

n = 20;   % 指定列向量的长度

xi = 1;   % 首元素
xe = 9;   % 末元素
q = 2;    % 差值

% 创建等差元素向量
x = [xi : q : xe];

% 给向量添加重复的9直到达到指定长度
x = repelem(x, ceil(n/length(x)));

% 截取到指定长度
x = x(1:n)';

% 输出列向量
x

输出结果为:

x =

     1
     3
     5
     7
     9
     9
     9
     9
     9
     9
     9
     9
     9
     9
     9
     9
     9
     9
     9
     9

请注意,首先我们通过指定xi(首元素),xe(末元素),q(公差)来创建了一个等差数列,然后我们使用repelem函数重复这个数列直到达到指定长度n。最后使用索引x(1:n)'截取到指定长度并将结果转换为列向量。

我记得matlab的repmat貌似可以让初始向量重复拓展,尝试下:

start_vector = [1, 3, 5, 7, 9];
desired_length = 10;
extended_vector = repmat(start_vector, 1, ceil(desired_length / length(start_vector)));
final_vector = reshape(extended_vector(1:desired_length), [], 1);