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

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

 採用された回答

Atsushi Ueno
Atsushi Ueno 2021 年 7 月 6 日

1 投票

>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 件のコメント

Gamma1990
Gamma1990 2021 年 7 月 6 日
{}でcell配列の内容にアクセスできるのですね.
勉強になりました,ありがとうございます.
Hernia Baby
Hernia Baby 2021 年 7 月 6 日
編集済み: Hernia Baby 2021 年 7 月 6 日
ちなみに連結は思いつく限り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 2021 年 7 月 7 日
色々な連結方法があるとは驚きです.
大変参考になります.
ありがとうございました.
Atsushi Ueno
Atsushi Ueno 2021 年 7 月 7 日
@Hernia Babyさん参考になります。大括弧で連結も併記しようとしましたが「data=[data1(:);data2(:)]かな?あれなんか変だな?」とか混乱していました

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeLogical についてさらに検索

製品

リリース

R2020b

Community Treasure Hunt

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

Start Hunting!