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教程。你可以从这里开始: