ある配列から行要素(​または列要素)を一塊​として新たな配列を作​る配列操作

5 次查看(过去 30 天)
Naoto Iwaki
Naoto Iwaki 2019-11-7
サイズM×Nの配列A(M×N double)についてワークスペース上での変数保存結果が
M×1の配列B(行の要素がそれぞれ1×N double型)やM×1の配列C(行の要素がそれぞれN×1 double型)
となるような配列B、Cを作りたいのですが方法がわかりません。
例えば、3×4の配列Aについて
A=
B= C=
のように作りたいです
以下コード
%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)になる

采纳的回答

Takashi Ueno
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
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の配列となります。)
通常、こういったことを行いたい場合、セル配列を利用しますが、いかがでしょうか。
ご質問に対する私の理解が誤っていたら申し訳ございません。
Naoto Iwaki
Naoto Iwaki 2019-11-7
ありがとうございます。
セル配列で行ってみることにします。

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!