私は次元1000x1(またはそれ以上)のセル配列VsCellを持っています。 VsCellの各項目は501x567の行列です。私は、セルに含まれるすべての行列の位置を占める要素を抽出したいと思います。matlabセルアレイのn番目の要素を選択する
VsCell {:}(1,1) - セル内の配列のすべての要素について VsCell {:}(2,1) - 配列のすべての最初の行2要素細胞内で
これらの選択の平均値または中央値を取って、VsCell配列の平均/中央値/等を表す単一の[501x567]マトリックス配列を埋め込むつもりである。 mean(VsCell {:}(1,1))である。
私はVsCell {:}(1,1)を試しましたが、 "Bad Cell Reference Operation"を返します。
また、ループ/ cellfunでほとんどまたはまったくこれを達成する方法はありますか? オンラインで見つかった例を使って、これを実際に達成することはできませんでした。
ありがとうございました。必要があれば、さらに明確にすることができてうれしいです。
ありがとう@Andras!あなたは正しいです、私はスピードのために配列で作業することを選択しました。猫は仕事にあまりにも悪くはない、私のデータセットが本当に大きくなる可能性があることを考えれば、ネストされたfor-loopを使うよりも良い仕事をする。 – QP1
catメソッドは配列のサイズ制限までうまく動作します。その後、メモリエラーが発生します。あなたはおそらく何か提案がありますか?私はこの時点でcellfunやforループの実装さえ気にしません。ありがとう – QP1
@ QP1興味深いことに、私はあなたが 'cat()'の後に得た配列がセルそのものよりも少ないスペースを占めていると思います。 2つの可能な説明は、(1)あなたのデータが非常に大きいので、同時に1つのコピーしかメモリに収まらないため、元のセル+新しい配列が多すぎるか、(2) 'cat'にメモリオーバーヘッドがある。 2番目のケースでは、 'VsMat = 0(VsCell {1}、length(VsCell));}であらかじめ割り当てることができます。' 'VsMat(:、: 'cat'を使うのではなく、簡単な方法があるとは思えません。 –