同じ型のcell配列​2つを1つのcell​配列にまとめることは​できますか?

・実現したいこと
したいことは,同じ型のcell配列2つを1つのcell配列にまとめることです.
例えば,1番目の画像(変数:data1)の1行目と,2番目の画像(変数:data2)の1行目を組み合わせて3番目の画像(変数:data)のようなcell配列を作れないでしょうか?
・試したこと
data={data1;data2}
上のように式を組んだら,上の画像のようになってしまいました.
初歩的な質問で恐縮ですが,よろしくお願いします.

 Accepted Answer

>1番目の画像(変数:data1)の1行目と,2番目の画像(変数:data2)の1行目を組み合わせて3番目の画像(変数:data)のようなcell配列を作れないでしょうか?
data1 = {1,2,9,5,8,10,8,7,7,5,4,1,9}
data1 = 1×13 cell array
{[1]} {[2]} {[9]} {[5]} {[8]} {[10]} {[8]} {[7]} {[7]} {[5]} {[4]} {[1]} {[9]}
data2 = {[0;0;0;1;0;0],[1;0;0;1;0;1],[0;0;1;0;1;0],[1;0;0;0;1;1],[0;1;1;0;0;1],[0;1;0;0;1;0],[0;1;1;1;1;1],[1;1;1;0;0;1],[0;1;1;0;0;0],[0;1;1;0;0;1],[0;1;1;0;0;0],[0;1;0;1;0;1],[0;1;0;0;1;0]}
data2 = 1×13 cell array
{6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double}
data={data1;data2} % 上のように式を組んだら,上の画像のようになってしまいました.
data = 2×1 cell array
{1×13 cell} {1×13 cell}
data={data1{:};data2{:}} % こうです
data = 2×13 cell array
{[ 1]} {[ 2]} {[ 9]} {[ 5]} {[ 8]} {[ 10]} {[ 8]} {[ 7]} {[ 7]} {[ 5]} {[ 4]} {[ 1]} {[ 9]} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double}

4 Comments

Gamma1990
Gamma1990 on 6 Jul 2021
{}でcell配列の内容にアクセスできるのですね.
勉強になりました,ありがとうございます.
Hernia Baby
Hernia Baby on 6 Jul 2021
Edited: Hernia Baby on 6 Jul 2021
ちなみに連結は思いつく限り3種類あります
clc,clear;
data1 = {1,2,9,5,8,10,8,7,7,5,4,1,9};
data2 = {[0;0;0;1;0;0],[1;0;0;1;0;1],[0;0;1;0;1;0],[1;0;0;0;1;1],[0;1;1;0;0;1],[0;1;0;0;1;0],[0;1;1;1;1;1],[1;1;1;0;0;1],[0;1;1;0;0;0],[0;1;1;0;0;1],[0;1;1;0;0;0],[0;1;0;1;0;1],[0;1;0;0;1;0]};
1.大括弧で連結
storage1 = [data1;data2]
storage1 = 2×13 cell array
{[ 1]} {[ 2]} {[ 9]} {[ 5]} {[ 8]} {[ 10]} {[ 8]} {[ 7]} {[ 7]} {[ 5]} {[ 4]} {[ 1]} {[ 9]} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double}
2.関数を使用
storage2 = vertcat(data1,data2)
storage2 = 2×13 cell array
{[ 1]} {[ 2]} {[ 9]} {[ 5]} {[ 8]} {[ 10]} {[ 8]} {[ 7]} {[ 7]} {[ 5]} {[ 4]} {[ 1]} {[ 9]} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double}
3.中身を1つずつ出して交互に算出
storage3 = {data1{:};data2{:}}
storage3 = 2×13 cell array
{[ 1]} {[ 2]} {[ 9]} {[ 5]} {[ 8]} {[ 10]} {[ 8]} {[ 7]} {[ 7]} {[ 5]} {[ 4]} {[ 1]} {[ 9]} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double} {6×1 double}
詳しくは以下をどうぞ
Gamma1990
Gamma1990 on 7 Jul 2021
色々な連結方法があるとは驚きです.
大変参考になります.
ありがとうございました.
Atsushi Ueno
Atsushi Ueno on 7 Jul 2021
@Hernia Babyさん参考になります。大括弧で連結も併記しようとしましたが「data=[data1(:);data2(:)]かな?あれなんか変だな?」とか混乱していました

Sign in to comment.

More Answers (0)

Categories

Products

Release

R2020b

Community Treasure Hunt

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

Start Hunting!