2017-12-21 8 views
1

iはセル配列の各要素を変換するために、以下のコマンドを使用するセルアレイの各行は、次の寸法で構成されている寸法64x8のC1つの要素をセル配列の他の行に連結するにはどうすればよいですか?

セイ、

10x26 double 10x26 double 10x26 double 10x26 double 10x26 double 10x26 double 10x26 double 10x26 double 

を有していました私に次のような出力を与えた行列に、

D = cellfun(@(x) {x(:)}, C); 

水平各 がセルアレイの8行を横切っ要素を260x1連結する

は今、私が必要とするので、私は、単一のセルに

2080x1次元-EDの値になるだろう

ここで、2080は260x8の積です(8行に沿って)。 64x8セル配列を64x1配列に変換する必要があります。

ので、私はそれがセル配列の各要素に関数を適用するため、cellfunが使用できないことを願って

2080x1 
2080x1 
...... 
...... 
...... 
2080x1 

、以下のような出力を取得する必要があります。しかし、私はセル配列自体の要素を連結する必要がありますまた、ループなしでそれを行う方法がある場合私に知らせてください。

array = vertcat(cellArray{:}); 

{:}部分が出力のリストとしてすべてのセルの内容を返し、vertcatは、入力としてこれらを取り、最初の次元に沿ってそれらを連結:

答えて

2

ここにトリックはvertcatを使用することです。 2番目のディメンションに連結したい場合はhorzcatを使用し、他のディメンションに連結したい場合は一般的なcatを使用できます。

horzcat(A, B, ...)vertcat(A, B, ...)構文それぞれ[A, B, ...][A; B; ...]の機能的形態です。

元のCには、cellfunを使用せずにこれらの機能を使用することもできます。これらの方法を試して、その機能をよりよく理解してください。

関連する問題