我试图在预先存在的矩阵中添加一行。我想知道为什么以下代码不起作用,而我应该做什么。
A = zeros(25, 5000);
A = [ones(1, columns(A)) A]
% I get an error message: "horizontal dimensions mismatch (1x5000 vs 25x5000)"
但是,如果我想将一列1添加到预先存在的矩阵中,我可以轻松地执行此操作而不会收到错误消息,使用与上述失败相同的方法。
A = zeros(25, 5000);
A = [ones(rows(A), 1) A]
% no error message, A becomes a 25x5001 matrix with the first column as a column of ones
为什么此方法可用于添加列但无法添加行?我应该使用哪种方法在我的矩阵中添加一行?
答案 0 :(得分:1)
您可以使用以下语法添加行:
A = [A; ones(1, columns(A))] % the key here is the semicolon
它适用于列的原因是因为矩阵尺寸。假设您有一个包含m
行和n
列的矩阵,现在您可以使用以下内容轻松地将包含m
行的单个列添加到矩阵中:
A = [ones(rows(A), 1) A] % dimensions match
现在,使用以下语法:
A = [ones(1, columns(A)) A]
您正在尝试添加n
行的列,因此尺寸不匹配错误。
答案 1 :(得分:0)
[ A B ]
与[ A , B ]
相同,并水平连接A
和B
。
[ A ; B ]
垂直连接A
和B
。
见the official MATLAB documentation on concatenation。 (我知道你正在使用Octave,它的语法相同。)