/ /オブジェクトの配列プロパティの行列-MATLAB

オブジェクトの配列プロパティの行列 - matlab

クラスの配列があります(これを呼び出します) a、サイズMx1)にはプロパティ(feature)1xN配列を保持します。私は、それぞれの行を含むMxNである新しい行列を取得しようとしています feature オブジェクトのプロパティ。例えば:

M = 3
N = 4
a(1,1).feature = [1 2 3 4]
a(2,1).feature = [5 6 7 8]
a(3,1).feature = [9 10 11 12]

次に、何らかの機能が与えられると、答えは次のようになります。

ans = [1 2 3 4; 5 6 7 8; 9 10 11 12]

現在、私は次を使用しています:

ans = cell2mat({a.feature}")

しかし、私はこれを行う方法があるはずだと思うセルに変換することなく、次元を切り替えてから、マトリックスに変換します。私は正しいですか、これが問題を解決する最良の方法でしょうか?ドキュメントでそのような機能を見つけることができませんでした。

回答:

回答№1は1

オブジェクトの配列があり、ドット参照を使用してプロパティにアクセスする場合、 コンマ区切りリスト 返されます。このコンマ区切りリスト 関数に渡すことができます 複数の入力引数として表示されます。

あなたの場合、このコンマ区切りのリストをに渡すことができます cat 各値を最初の次元に沿って次の値に連結することを指定します。したがって、これは単に次のようになります。

features = cat(1, a.feature)

%// 1     2     3     4
%// 5     6     7     8
%// 9    10    11    12

これは機能的に同等です:

features = cat(1, a(1).feature, a(2).feature, a(3).feature, ..., a(end).feature);