在Matlab / Octave矩阵中使用范围

时间:2012-05-06 21:30:15

标签: matlab math vector matrix octave

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

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

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

我想我可以通过采用'ones'数组并将每个数字相乘来实现 按向量排...但我不知道该怎么做

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

...

任何提示?

3 个答案:

答案 0 :(得分:5)

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

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

这意味着你要重复repmat的第一个参数垂直和水平一次(即你将它保持水平)。

答案 1 :(得分:5)

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

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

   1   2   3 
   1   2   3
   1   2   3

或者你可以使用repmat([编辑],因为Phonon在我之前写了几秒[/ edit])。

答案 2 :(得分: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)