在Matlab/倍频程矩阵中使用量程

在Matlab/倍频程矩阵中使用量程,matlab,math,vector,matrix,octave,Matlab,Math,Vector,Matrix,Octave,假设我想创建一个100x100矩阵,每行 包含元素1-100 A = [1:100; 1:100; 1:100... n] 显然,形成矩阵是个坏主意,因为它会迫使我 创建范围为1:100的100行 我想我可以通过取一个“1”数组并乘以每个 按向量行。。。但我不知道怎么做 a = (ones(100,100))*([]) ? 有什么提示吗?您可以使用repeat matrix函数(repmat())。您的代码将如下所示: A = repmat( 1:100, 100, 1 ); 这意味着您将

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

A = [1:100; 1:100; 1:100... n]
显然,形成矩阵是个坏主意,因为它会迫使我 创建范围为1:100的100行

我想我可以通过取一个“1”数组并乘以每个 按向量行。。。但我不知道怎么做

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

有什么提示吗?

您可以使用repeat matrix函数(
repmat()
)。您的代码将如下所示:

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

这意味着您将垂直重复
repmat
的第一个参数100次,水平重复一次(即保持水平)。

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

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

   1   2   3 
   1   2   3
   1   2   3

或者你也可以使用repmat([edit]就像Phonon在我前面几秒钟写的那样[/edit])。

是的,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)

非常感谢你们两位。两个答案都很完美。我给第一个回答的人打勾。你也应该试试meshgrid()