2016-10-27 26 views
0

私はMatlabでセル配列を使用しておらず、質問があります。matlabの各セル配列要素のループ

私は2つのセルアレイclを持っています。私はcに次元10 x 785の10の行列を持たせたいと思う。私はcの行列の各行をループしたいと思います。

たとえば、これらの行のそれぞれを別のベクターに置き換えたいとします。どうしたらいいですか?ここで

が、私は現在、最終ループで

k=10; 
c={10}; 
l={10}; 
for v=1:10 
    c{v}=rand(k,d); 
end 
for a=1:10 
    l{a}=zeros(k,1); 
end 
for s=1 : 10 
     for j=1:k 
      l{s}=c{s,???}*xn'; 
     end 
    end 

を持っているコードですが、私はclのどのセルを表示してみてください。しかし、c{1}の各行にはどのようにアクセスできますか?

答えて

1

セル参照は、フルマトリクスを使用するあらゆるコンテキストで使用できます。行列Mのj番目の行を得るには、通常のM(j,:)を実行します。セル配列cに格納されている行列のj行目を取得するには、c{1}(j,:)を実行します。あなたのケースではそう

c={10}は、あなたが期待する何をしていないことをl{s}(j,:) = c{s}(j,:)*xn';

注意。 c=cell(1,10)と言うこともできますし、cをクリアして動的にビルドさせることもできます。

最後に、各行列は同じサイズであるため、セル配列の代わりに3d行列を考えてください。パフォーマンスは向上し、シンタックスは少しコンパクトになり、実行している操作は行列の乗算にマッピングされます:

l = zeros(k, 1, 10); 
c = rand(k, d, 10); 

% Refer to c(:, :, 1) to get the first matrix 
関連する問題