在 Matlab 中将元素附加到矩阵
Append elements to matrix in Matlab
我想制作这样的矩阵:
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 行 x 2 列
但我需要动态添加一个 新行,根据我想要的给定 window 删除第一行。
例如我有一个 window 行中的 N 个元素,当我在矩阵中追加新行时,我必须删除第一个。
在上面的示例中,window 的 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 rows):
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]
它使用 [ ] concatentation 运算符。
我想制作这样的矩阵:
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 行 x 2 列
但我需要动态添加一个 新行,根据我想要的给定 window 删除第一行。
例如我有一个 window 行中的 N 个元素,当我在矩阵中追加新行时,我必须删除第一个。
在上面的示例中,window 的 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 rows):
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]
它使用 [ ] concatentation 运算符。