/ /希望のサイズの行列にセル配列を整形する方法 - matlab、matrix、reshape、cell-array

どのように希望のサイズで行列にセル配列を変形する - matlab、matrix、reshape、cell-array

私はそれのすべての要素が2 * 2のセル配列を持っていますm1、m2、m3、m4と呼ばれる2 * 2の行列です。このセル配列をサイズ4 * 4の行列に変換したいので、Gernerated行列はM = [m1 m2; m3 m4]になります。 cell2mat関数を使って私に2 * 8の行列を与え、それを4 * 4に再形成しますが、これは機能しません。

誰も私をmatlabでこれを行うのを助けることができますか?

入力番号セル配列と行列サイズの変更に基づいて私のコードでは、セル配列と行列のサイズの異なるサイズの一般的なコードを与えてください。

回答:

回答№1は0

cell2mat うまくいくはずです。あなたが望むものに応じて、あなたは 転置

>> 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);