通过多次合并相同的行向量来构建矩阵

发布于 2024-11-27 02:15:19 字数 157 浏览 1 评论 0原文

有没有一个matlab函数可以让我执行以下操作?

x = [1 2 2 3];

然后基于 x 我想构建矩阵 m = [1 2 2 3; 1 2 2 3; 1 2 2 3; 1 2 2 3]

Is there a matlab function which allows me to do the following operation?

x = [1 2 2 3];

and then based on x I want to build the matrix m = [1 2 2 3; 1 2 2 3; 1 2 2 3; 1 2 2 3]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无声无音无过去 2024-12-04 02:15:19

您正在寻找 REPMAT 函数:

x = [1 2 2 3];
m = repmat(x,4,1);

您还可以使用索引来重复行:

m = x(ones(4,1),:);

甚至外部产品:

m = ones(4,1)*x;

并且还使用 BSXFUN:

m = bsxfun(@times, x, ones(4,1))

You are looking for the REPMAT function:

x = [1 2 2 3];
m = repmat(x,4,1);

You can also use indexing to repeat the rows:

m = x(ones(4,1),:);

or even outer-product:

m = ones(4,1)*x;

and also using BSXFUN:

m = bsxfun(@times, x, ones(4,1))
溺孤伤于心 2024-12-04 02:15:19

您可以尝试使用vertcat,如下所示:

x = [1 2 2 3];
m = vertcat(x,x,x,x);

或者甚至简单地:

x = [1 2 2 3];
m = [x;x;x;x];

编辑:

对于x的倍数,您可以执行以下操作:

x = [1 2 2 3];
m = [x;2*x;3*x];  %  [1 2 2 3; 2 4 4 6; 3 6 6 9]

编辑2:

对于m中的任意数量的x...

n = 3; % number of repetitions...
x = [1 2 2 3];
m = [];
for i=1:n
    m = [m;x];
end

You could try using vertcat, like this:

x = [1 2 2 3];
m = vertcat(x,x,x,x);

Or even simply:

x = [1 2 2 3];
m = [x;x;x;x];

EDIT:

for multiples of x, you can do:

x = [1 2 2 3];
m = [x;2*x;3*x];  %  [1 2 2 3; 2 4 4 6; 3 6 6 9]

EDIT2:

For an arbitrary number of x's in m...

n = 3; % number of repetitions...
x = [1 2 2 3];
m = [];
for i=1:n
    m = [m;x];
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文