我对matlab很新,所以可能会有一些令人目眩的明显缺失的东西。
基本上,我有一个大的数据集矩阵(170k x 15),我需要从中提取相对大量的子表。这是一只潜入大海的鸟的8小时传感器数据。我需要隔离每只潜入大海的鸟类。幸运的是,其中一个传感器是一个压力传感器,它使整个事情变得更加容易,但我的问题是,一旦我通过数据迭代找到压力传感器的实例上升,我就计算了“潜水”的长度和范围,我不知道将矩阵的这个提取复制到它自己的单独集合中的最佳方法。
我可以使用哪种方法最简单地一次取20行矩阵并将其放入自己独特的矩阵中?
很抱歉,如果这很明显。我好好环顾四周,但似乎没有回答我的问题。为了记录,我对编程很满意。刚认真对待matlab。
谢谢!
答案 0 :(得分:0)
如果您知道要提取的矩阵行,并且您想要所有列数据,那么只需执行类似
的操作% create a 25x25 matrix
A = magic(25);
% grab rows 12 through 23
subA = A(12:23,:);
在上面,我们指定了我们想要的行数(12:23)和所有列(:)。
如果您想创建一组这些潜水,并且您希望每次潜水都有不同的行数,您可以将子集放入一个单元格阵列
dives = {};
atDive = 1;
% iterate over data
for k=1:length(A)
% if found dive start and end, extract and put into cell array
dives{atDive} = A(diveStart:diveEnd,:);
atDive = atDive + 1;
end
上述内容可用于存储所有潜水以供进一步分析。试一试,看看会发生什么!
答案 1 :(得分:0)
我可以使用哪种方法最简单地一次取20行矩阵并将其放入自己独特的矩阵中?
您可以使用mat2cell
。对于20行的块大小,您可以发出:
C = mat2cell(M,repmat(20,1,size(M,1)/20))
其中M
是您的原始矩阵。演示大小为4:
>> M
M =
144 2 3
13 131 130
25 119 118
108 38 39
96 50 51
61 83 82
73 71 70
60 86 87
48 98 99
109 35 34
121 23 22
12 134 135
>> chunksize = 4;
>> C = mat2cell(M,repmat(chunksize,1,size(M,1)/chunksize))
C =
[4x3 double]
[4x3 double]
[4x3 double]
>> C{2}
ans =
96 50 51
61 83 82
73 71 70
60 86 87
C
的每个单元格将包含一个4x3矩阵,如图所示。