在Matlab中将元素追加到矩阵中

时间:2016-01-27 17:57:59

标签: 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

在这种情况下,我有 5行2列

但是我需要动态添加新行,删除我想要的给定窗口中的第一行。

e.g。我有一个N行元素的窗口,当我在矩阵中追加新行时,我必须删除第一行。

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

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中看到它可以处理矩阵向量和单元格。

E.g 我实现了我想做的事情:

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

但我认为这不是正确的做法。 我需要一种更简单的方法来追加,并删除第一行而不需要连接单元格并进行单元转置。

1 个答案:

答案 0 :(得分:0)

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

% 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]

它使用[] concatentation运算符。

相关问题