我完全堅持這一點:我從一個平面文件類型的列表開始,我從這樣的SQL語句中獲得並希望將它轉換爲4維數組。MATLAB:將一個平面文件列表轉換成多維數組
SELECT a1, a2, a3, a4, v FROM table A;
a1 a2 a3 a4 v
--------------
2 2 3 3 100
2 1 2 2 200
3 3 3 3 300
...
- A1至A4是從一系列的一些標識符(整數)(1:5),其也被填充四維陣列爲新的座標。
- v是一個值(雙倍),例如測量結果。
我現在想要的是將這個列表轉換成維度爲(5,5,5,5)的四維數組,其中每個v都放在正確的座標上。
這可以很容易地使用for循環來完成,但是由於我有很多數據,所以這是不可行的。
如果我剛一個維,我會做somesthing這樣的:
a1 = [2;5;7]; % Identifiers
v = [17;18;19]; % Values
b1 = (1:10)'; % Range of Identifiers
V = zeros(10,1); % Create result vector with correct dimensions
idx = ismember(b1, a1); % Do the look up
V(idx) = v; % Insert
我的問題:我如何才能做到這一點對於上述四維陣列不使用for循環。有沒有這樣做的「Matlab方法」?
任何幫助,非常感謝!
感謝, 賈尼奧斯奇
就這樣我很清楚,你有625個觀測值,前四列代表矩陣指數,最後一列代表矩陣值? – prototoast 2012-03-03 13:37:53
是的。它也可能小於此值,在這種情況下,缺失值將爲零。 – Janosch 2012-03-03 13:46:15
這可以通過線性索引來完成嗎? – Janosch 2012-03-03 13:54:32