私はそれのすべての要素が2 * 2のセル配列を持っていますm1、m2、m3、m4と呼ばれる2 * 2の行列です。このセル配列をサイズ4 * 4の行列に変換したいので、Gernerated行列はM = [m1 m2; m3 m4]になります。 cell2mat関数を使って私に2 * 8の行列を与え、それを4 * 4に再形成しますが、これは機能しません。
誰も私をmatlabでこれを行うのを助けることができますか?
入力番号セル配列と行列サイズの変更に基づいて私のコードでは、セル配列と行列のサイズの異なるサイズの一般的なコードを与えてください。
回答:
回答№1は0cell2mat
うまくいくはずです。あなたが望むものに応じて、あなたは 転置:
>> m1 = [1 2; 3 4];
>> m2 = [11 12; 13 14];
>> m3 = [21 12; 23 14];
>> m4 = [31 32; 33 34];
>> myCell = {m1, m2; m3 m4};
>> cell2mat(myCell)
ans =
1 2 11 12
3 4 13 14
21 12 31 32
23 14 33 34
>> cell2mat(myCell.")
ans =
1 2 21 12
3 4 23 14
11 12 31 32
13 14 33 34
回答№2の場合は0
ヘイバート、
私があなたが呼んでいるもの M
実際には c
あなたの最後から 役職?問題はそれです c
各要素が1x4である2x2セル配列です。
私がそこに投稿したものを修正すればそして持っている M
あなたが各サブマトリックスを望む形になります(M
2×2の部分行列を有する2×2セルアレイである)。私は、 c
。私たちはあなたが望むものを得ることができます。
M = reshape(arrayfun(@(i) randi(100, 2, 2), 1:4, "uni", 0), 2,2);
c = cellfun(@(x) reshape(x, size(M)), reshape(num2cell(cell2mat(cellfun(@(m) m(:), M(:)", "uni", 0)), 2), size(M{1})), "uni", 0);
cMatrix = cell2mat(c);