Matlab中矩阵元素的附加

Matlab中矩阵元素的附加,matlab,matrix,append,cells,Matlab,Matrix,Append,Cells,我想做一个这样的矩阵: n rows x 2 columns 22.3 18.3 22.4 18.4 22.5 18.3 22.4 18.3 22.2 18.6 22.3 18.3 22.4 18.4 22.5 18.3 22.4 18.3 22.2 18.6 22.8 17.1 在这种情况下,我有5行乘2列 但是我需要动态地追加一个新行,删除给定窗口中的第一行 e、 我有一个包含N个元素的窗口,当我在矩阵中添加新行时,我必须删除第一行 在上面的示例中,5行的窗口: 如果需要输入(追加)新

我想做一个这样的矩阵:

n rows x 2 columns

22.3 18.3
22.4 18.4
22.5 18.3
22.4 18.3
22.2 18.6
22.3 18.3
22.4 18.4
22.5 18.3
22.4 18.3
22.2 18.6
22.8 17.1
在这种情况下,我有5行乘2列

但是我需要动态地追加一个新行,删除给定窗口中的第一行

e、 我有一个包含N个元素的窗口,当我在矩阵中添加新行时,我必须删除第一行

在上面的示例中,5行的窗口: 如果需要输入(追加)新行:22.8 17.1,该行将如下所示:

n rows x 2 columns

22.3 18.3
22.4 18.4
22.5 18.3
22.4 18.3
22.2 18.6
22.3 18.3
22.4 18.4
22.5 18.3
22.4 18.3
22.2 18.6
22.8 17.1
共有6行,我需要删除第一行。之后,该行变成如下所示(5行)

22.4 18.4
22.5 18.3
22.4 18.3
22.2 18.6
22.8 17.1
我的问题: -如何在matlab中添加新行? -如何在matlab中删除新行

我在matlab中看到,可以处理矩阵向量和单元格

例如 我做到了我想要的:

messageArr = [];
messageArr{end+1} = 23.01
messageArr{end+1} = 23.02
messageArr = messageArr.';%'//
messageArr{end+1} = 23.03
messageArr{end+1} = 23.04
messageArr{end+1} = 23.04
messageArr{end+1} = 23.04
messageArr{end+1} = 23.04
messageArr{end+1} = 23.04
messageArr{end+1} = 23.04
messageArr{end+1} = 23.04
messageArr{end+1} = 23.04
messageArr{end+1} = 23.04
messageArr{end+1} = 23.04
messageArr2 = [];
messageArr2{end+1} = 17.01
messageArr2{end+1} = 17.02
messageArr2{end+1} = 17.03
messageArr2{end+1} = 17.04
messageArr2{end+1} = 17.04
messageArr2{end+1} = 17.04
messageArr2{end+1} = 17.04
messageArr2{end+1} = 17.04
messageArr2{end+1} = 17.04
messageArr2{end+1} = 17.04
messageArr2{end+1} = 17.04
messageArr2{end+1} = 17.04
messageArr2{end+1} = 17.04
messageArr2 = messageArr2.'%'//
Y = horzcat(messageArr, messageArr2)
Y = cell2mat(Y)
它给了我一个13x2的双矩阵:

23,0100000000000    17,0100000000000
23,0200000000000    17,0200000000000
23,0300000000000    17,0300000000000
23,0400000000000    17,0400000000000
23,0400000000000    17,0400000000000
23,0400000000000    17,0400000000000
23,0400000000000    17,0400000000000
23,0400000000000    17,0400000000000
23,0400000000000    17,0400000000000
23,0400000000000    17,0400000000000
23,0400000000000    17,0400000000000
23,0400000000000    17,0400000000000
23,0400000000000    17,0400000000000
但我认为这不是正确的方法。
我需要一种更简单的方法来添加和删除第一行,而不需要合并单元格和进行单元格转置。

此代码将添加新行并删除第一行:

% create five rows of two-column data
d=[22.3 18.3; 22.4 18.4; 22.5 18.3; 22.4 18.3; 22.2 18.6]
% this is a new row of data
newrow = [22.8 17.1]
% drop the first row and append the new data at the end
d = [d(2:end,:); newrow]

它使用[]运算符。

使用a而不是a有什么特殊原因吗?看,您设法找到了
horzcat
,为什么不试试
vertcat
?我会先把你的完整矩阵放在一起,检查它,然后删除你不想要的行。你显示的不是矩阵而是单元格数组。这两者在MATLAB中有根本的不同。我想你想要一个矩阵!它是?我打开matlab的窗口,只是复制。就像这个13x2 double,我想当你双击它在工作区中创建的变量时,它将它表示为单元格。在MATLAB中,为了去掉一行,你执行
Y(rowIdx,:)=[]
end
关键字也可能在这里派上用场
Y=[Y(end-3:end,;);newRow]
将为您提供一个大小为5的移动窗口
BigMat=[BigMat;newRow]
您需要阅读基本的MATLAB教程。你可以从这里开始: