假设我想创建一个100x100的矩阵,其中每一行包含1-100的元素
A = [1:100; 1:100; 1:100... n]
显然,创建一个矩阵是不明智的,因为我需要创建100行,每行的范围都是1到100。
我认为我可以通过取一个“ones”数组并将每一行乘以一个向量来完成它...但我不确定如何做到这一点。
a = (ones(100,100))*([])
有什么提示吗?
任何技巧?
1:100
。ones(3,1)*(1:3)
ans =
1 2 3
1 2 3
1 2 3
或者您可以使用repmat
函数(如Phonon在我之前几秒钟写的那样)。
repmat()
)。您的代码将如下所示:A = repmat( 1:100, 100, 1 );
repmat
的第一个参数在垂直方向上重复100次,在水平方向上保持不变(即横向不做改变)。是的,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)