我是Matlab世界的菜鸟,我想在矩阵的所有行的开头附加一个值。
mat =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
myval = 98;
我想得到一个矩阵:
mat =
98 16 2 3 13
98 5 11 10 8
98 9 7 6 12
98 4 14 15 1
我该怎么办?
我知道我们可以使用[a b]
之类的横向连接,但此处myval
和mat
的维度不同
我这样做了:
m = ones(4,1)*98
m =
98
98
98
98
mat = [m mat]
mat =
98 16 2 3 13
98 5 11 10 8
98 9 7 6 12
98 4 14 15 1
有更好的方法吗?
谢谢
答案 0 :(得分:2)
Anothe单线解决方案可能是:
mat=[repmat(myval,size(mat,1),1) mat]
通过使用size(mat,1)
,您可以自动处理行数。
希望这会有所帮助。
Qapla'
答案 1 :(得分:1)
我认为你做的很好。您可以通过组合语句来单行化:
mat = [(myval*ones(4,1)) mat];
答案 2 :(得分:0)
您可以将转置('
)与横向连接(horzcat
或[x y]
)一起使用:
>> z = magic(4)
z =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> c = [98 98 98 98]
c =
98 98 98 98
>> [c' z]
ans =
98 16 2 3 13
98 5 11 10 8
98 9 7 6 12
98 4 14 15 1
>> horzcat(c', z)
ans =
98 16 2 3 13
98 5 11 10 8
98 9 7 6 12
98 4 14 15 1