在Matlab/Octave矩阵中使用范围

Jos*_*eph 3 math matlab vector matrix octave

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

A = [1:100; 1:100; 1:100... n]
Run Code Online (Sandbox Code Playgroud)

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

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

a = (ones(100,100))*([])
Run Code Online (Sandbox Code Playgroud)

??

有小费吗?

Pho*_*non 5

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

A = repmat( 1:100, 100, 1 );
Run Code Online (Sandbox Code Playgroud)

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


arn*_*e.b 5

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

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

   1   2   3 
   1   2   3
   1   2   3
Run Code Online (Sandbox Code Playgroud)

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