ある配列から行要素(または列要素)を一塊として新たな配列を作る配列操作
14 ビュー (過去 30 日間)
古いコメントを表示
サイズM×Nの配列A(M×N double)についてワークスペース上での変数保存結果が
M×1の配列B(行の要素がそれぞれ1×N double型)やM×1の配列C(行の要素がそれぞれN×1 double型)
となるような配列B、Cを作りたいのですが方法がわかりません。
例えば、3×4の配列Aについて
A=![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/247160/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/247160/image.png)
B=
C=![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/247162/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/247161/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/247162/image.png)
のように作りたいです
以下コード
%Aの要素とサイズは省略 お任せいたします
for i=1:N %Nには数値入れる
A_cell{i}=A(1:end,i)';
end
A_cell=transpose(A_cell);
B=cell2mat(A_cell); %これだとAをただ転置しただけの配列(N×M)になる
0 件のコメント
採用された回答
Takashi Ueno
2019 年 11 月 7 日
BとCはセル配列であり、その各要素として1xNやNx1のdouble型配列を持たせたいということでしょうか?
仮にそうであれば、一例ですが下記のようなイメージかと。
A=reshape([1:12],3,4);
B=mat2cell(A,ones(1,size(A,1),1),size(A,2));
C=cellfun(@transpose,B,'UniformOutput',false);
3 件のコメント
Takashi Ueno
2019 年 11 月 7 日
恐縮ですが、行われたいことを把握できておりません。
MATLABにおいて、通常のdouble型等の配列は1つの要素に他の配列を持つことはできません。
つまり、Mx1のdouble型配列Bの1要素目であるB(1)に1x4 double型配列といったものは持てず、
B=[1x4 double;1x4 double;1x4 double]
というのは、3x4の行列となり、これはAと同じものになります。(double型配列として持つのであれば、Cについても3x1の配列ではなく、12x1の配列となります。)
通常、こういったことを行いたい場合、セル配列を利用しますが、いかがでしょうか。
ご質問に対する私の理解が誤っていたら申し訳ございません。
その他の回答 (0 件)
参考
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!