3

假设我想创建一个 100x100 矩阵,其中每一行包含元素 1-100

A = [1:100; 1:100; 1:100... n]

显然,形成一个矩阵是一个坏主意,因为它会迫使我创建 100 行范围为 1:100 的行。

我想我可以通过取一个'ones'数组并将每一行乘以一个向量来做到这一点......但我不知道该怎么做

a = (ones(100,100))*([])

??

有小费吗?

4

3 回答 3

5

您可以使用重复矩阵函数 ( repmat())。您的代码将如下所示:

A = repmat( 1:100, 100, 1 );

这意味着您要在repmat垂直方向和水平方向重复第一个参数 100 次(即您保持水平不变)。

于 2012-05-06T21:44:05.757 回答
5

1您可以将 100的列向量与 的行向量相乘1:100

ones(3,1)*(1:3)
ans =

   1   2   3 
   1   2   3
   1   2   3

或者你可以使用repmat([edit] as Phonon 在我之前几秒钟写的 [/edit])。

于 2012-05-06T21:44:13.057 回答
2

是的,repmat 是简单的解决方案,甚至可以说是正确的解决方案。但是知道如何可视化您的目标以及如何创建能够产生该目标的东西将在 MATLAB 中带来长期利益。所以尝试其他解决方案。例如...

cumsum(ones(100),2)

bsxfun(@plus,zeros(100,1),1:100)

ones(100,1)*(1:100)

cell2mat(repmat({1:100},100,1))

和无聊

repmat(1:100,100,1)
于 2012-05-07T11:02:42.860 回答