2016-09-21 8 views
0

forループを避けようとしていますが、私はすべての古い記事を読んでいますが、問題は解決できません。私はMATLABで新しく、私の無知のために謝罪します。セルと行列を含むforループの回避

私は300x2のセルを持ち、それぞれに128x128x256のマトリックスを持っています。それぞれ128x128ピクセルと256ピクセル/ピクセルのイメージです。 300x2のセルの最初の列には、私の平行な強度値があり、2番目の垂直強度値は垂直の値です。

私がしたいことは、(各コンポーネントの)すべての画像のすべてのピクセルを取り、強度値をチャンネルごとに合計することです。

私が持っているコードは以下の通りです:

Image_par_channels=zeros(128,128,256); 
Image_per_channels=zeros(128,128,256); 
Image_tot_channels=zeros(128,128,256); 
for a=1:128 
    for b=1:128 
     for j=1:256 
      for i=1:numfiles 
       Image_par_channels(a,b,j)=Image_par_channels(a,b,j)+Image_cell_par_per{i,1}(a,b,j); 
       Image_per_channels(a,b,j)=Image_per_channels(a,b,j)+Image_cell_par_per{i,2}(a,b,j); 
      end 
      Image_tot_channels(a,b,j)=Image_par_channels(a,b,j)+2*G*Image_per_channels(a,b,j); 
     end 
    end 
end 

私は導入し、それをスピードアップすることができると思います(:、:、j)を代わりに、AとBを指定します。しかし、まだforループです。私は専門知識の不足のために成功せずにcellfunを使用しようとしています。私に手を差し伸べてもらえますか?

本当にありがとうございます。

ありがとうございました。素敵な日です! Yは

答えて

0

私はあなたが私が長い時間でMathWorks社のMATLABでは動作していない

Image_par_channels=zeros(128,128,256); 
Image_per_channels=zeros(128,128,256); 
Image_tot_channels=zeros(128,128,256); 

for i=1:numfiles 
    Image_par_channels = Image_par_channels + Image_cell_par_per{i,1}; 
    Image_per_channels = Image_per_channels + Image_cell_par_per{i,2}; 
end 

Image_tot_channels = Image_par_channels + 2*G*Image_per_channels; 

のような何かができると信じて、私はあなたがこのような何かを行うことができます思い出しているようです。 gは定数です。

編集: +=を削除しました。増分割当は、matlabで利用可能な演算子ではありません。後で他の2つの変数を必要としない場合は、Image_tot_channelsをループに直接組み込むこともできます。

関連する問題