私は完全にこれに固執しています。私はこのようなSQL文から得たフラットファイルタイプのリストから始め、それを4D配列に変換したい。 A4へ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の範囲からいくつかの識別子(整数)である(1:5)、また新しい移入する4Dアレイの座標です。
- vは値(倍精度)です。測定の結果
ここでは、このリストを次元(5,5,5,5)の4D配列に変換して、各vを右側の座標に配置します。
これは簡単にforループを使って行うことができますが、私は多くのデータを持っているので、これは実際には実現できません。
私はちょうど1次元を持っていた場合、私はこのような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
は私の質問:どのように私はループのために使用しなくても、上記の4D配列のためにこれを行うことができます。それを行う "Matlab Way"はありますか?
ご協力いただきありがとうございます。あなたは線形インデックス、およびsub2ind機能を使ってやりたいことができるはず
おかげで、 ジャノスチ
最初の4つの列が行列インデックスを表し、最後の列が行列の値を表す625の観測値がありますか? – prototoast
はい。また、それよりも小さい場合もあります。その場合、欠損値はゼロになります。 – Janosch
これは線形インデックス付けで行うことができますか? – Janosch