假設我有3名患者的個人資料,但個人資料不具有相同的長度。我的問題是如何從這些數據創建一個單元陣列(參見下面),其中我的單元陣列的每個條目都將對應一個病人輪廓。由於如何使用這種類型的數據在Matlab中創建細胞陣列
患者檔案
1 2
1 3
1 -2
1 1
1 3
1 2
2 -1
2 -3
2 0
2 -2
3 2
3 2
3 1
3 3
3 2
3 -1
3 -2
3 -3
3 -2
3 -2
假設我有3名患者的個人資料,但個人資料不具有相同的長度。我的問題是如何從這些數據創建一個單元陣列(參見下面),其中我的單元陣列的每個條目都將對應一個病人輪廓。由於如何使用這種類型的數據在Matlab中創建細胞陣列
患者檔案
1 2
1 3
1 -2
1 1
1 3
1 2
2 -1
2 -3
2 0
2 -2
3 2
3 2
3 1
3 3
3 2
3 -1
3 -2
3 -3
3 -2
3 -2
使用mat2cell作爲發動機。我假設您想彙總患者個人資料數組第二列的結果,作爲第一列的功能。如果配置文件是在陣列中稱爲PP:
counts = [6;4;10];
C = mat2cell(PP(:,2),counts)
C =
[ 6x1 double]
[ 4x1 double]
[10x1 double]
看到,這個步驟已經做了數據提取到獨立單元的工作。
C{:}
ans =
2
3
-2
1
3
2
ans =
-1
-3
0
-2
ans =
2
2
1
3
2
-1
-2
-3
-2
-2
如果PP沒有預先排序,我們需要在PP的第一列進行排序。所以我們需要做的是知道每個病人有多少條記錄。這是準馬拉德可以處理的任務。最後,如果患者標識符列表比數字更復雜(1:3),那麼通過調用unique來爲您解決問題。
可以使用accumarray
用自定義功能
profile = accumarray({PP(:,1) }, PP(:,2), [], @(x) {x});