Matrix ';水平尺寸不匹配';向八度矩阵中添加一行时出错

Matrix ';水平尺寸不匹配';向八度矩阵中添加一行时出错,matrix,octave,Matrix,Octave,我正在尝试向预先存在的矩阵中添加一行。我想知道为什么下面的代码不起作用,以及我应该怎么做 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,

我正在尝试向预先存在的矩阵中添加一行。我想知道为什么下面的代码不起作用,以及我应该怎么做

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

为什么此方法适用于添加列而不适用于添加行?我应该使用什么其他方法向矩阵中添加行?

您可以使用以下语法添加行:

A = [A; ones(1, columns(A))] % the key here is the semicolon
A = [ones(1, columns(A)) A]
它对列有效的原因是因为矩阵维度。假设您有一个包含
m
行和
n
列的矩阵,现在您可以使用以下方法轻松地将一个包含
m
行的列添加到矩阵中:

A = [ones(rows(A), 1) A] % dimensions match
现在,使用以下语法:

A = [A; ones(1, columns(A))] % the key here is the semicolon
A = [ones(1, columns(A)) A]

您正在尝试添加一个包含
n
行的列,因此会出现维度不匹配错误。

[a B]
[a,B]
相同,并水平连接
a
B

[A;B]
垂直连接
A
B


看。(我知道您使用的是八度音阶,语法相同。)

此示例来自Andrew的ML课程,我也遇到了这样一个问题:D