假设我有一个名为data
的单元格,其中包含三个元素。每个单元元素包含(n×2)矩阵。 data
中每个单元格的第一列是其旁边数据的ID,而第二列是实际数据。请注意,我正在使用的实际data
不是rand
个数字,而是实际的具体数字。
data = cell(1,3);
data{1} = [1 rand ;
2 rand ;
3 rand ;
4 rand];
data{2} = [2 rand ;
3 rand ;
4 rand ;
5 rand ;
6 rand];
data{3} = [2 rand ;
5 rand ;
6 rand ;
7 rand ;
8 rand ;
9 rand];
我想将data
的内容重新排列到名为rearrange
的矩阵中,如下所示。如您所见,ID 1
仅存在于data{1}
中,因此在rand
的第一行的第三和第四列中,rearrange
被视为零。如您所见,ID 9
仅存在于data{3}
中,因此rand
中rearrange
的第九和第三列中的rearrange = [1 rand 0 0 ;
2 rand rand rand ;
3 rand rand 0 ;
4 rand rand 0 ;
5 rand rand rand ;
6 0 rand rand ;
7 0 0 0 ;
8 0 0 rand ;
9 0 0 rand];
被视为零。
1:9
在这种情况下,唯一ID为1:9
,但我想自动化唯一ID列表,而不是仅仅说{{1}}。
答案 0 :(得分:1)
你可以使用for循环:
for i = 1: length(data)
rearrange(data{i}(:,1),i+1) = data{i}(:,2);
end
rearrange(:,1) = 1:size(rearrange,1);
答案 1 :(得分:1)
这可以很容易地使用for
循环完成:
CellData = data;
for n = 1:length(CellData) %loop through each cell
indices = CellData{n}(:,1); %extract indices
values = CellData{n}(:,2); % extract values
Matrix(indices, n) = values; %assign values to correct location
end
% add the first column in
sMatrix = size(Matrix);
counter = 1:sMatrix(1);
finalMatrix = [counter' Matrix];