MATLAB如何构造一个每行(每列)都相同的矩阵(方阵)

已知一个有n个元素的列向量A,想要构造一个n*n方阵使每一列都为A。
比如向量A=[1 2 3 4]‘,想用MATLAB构造一个方阵[1 1 1 1;2 2 2 2;3 3 3 3;4 4 4 4],应该怎么编?
列少的时候可以枚举,有上千列的时候该怎么办?

每行相同的方阵也写一下嘛。

各位大侠,小弟来求代码,望不吝赐教。

第1个回答  2022-11-22
可以用repmat来构造。
repmat(A,r,c)会把A看成整体,将其填充为r乘c块的矩阵。
比如你问的问题可以写成
A=[1 2 3 4]';
B=repmat(A,1,4);
第2个回答  2019-09-22
创建一个随机矩阵:它的每行每列都只有一个位置为1,其余为0
a=eye(5)
b=randperm(5)
c=a(:,b)
这样c就满足要求。
创建一个矩阵只要求每列上只有一个位置为1
a=zeros(5);
for
i=1:length(a)
b=randperm(5);
a(b(1),i)=1;
end
第3个回答  2010-05-01
个人感觉你还是直接输入,要简单很多.
第4个回答  2014-06-04
已知A=[1 2 3 4]‘;

B=repmat(A,1,4);
第5个回答  推荐于2018-05-14
A = A(:,ones(1,n));
这个绝对可以,亲测可行,不过答案来得有点晚。不是方阵也行,把上面的n改成你要的列数即可。

不过貌似对A的长度有限制,太长的时候没法用这个办法。
相似回答