2

次の matlab 行を C++ に変換する際に問題があります。

for i=1:height 
  for j=1:width 
    if (match == 0) 
      [min_w, min_w_index] = min(w(i,j,:)); 
      mean(i,j,min_w_index) = double(data(i,j)); 
      sd(i,j,min_w_index) = sd_init; 
    end
    rank = w(i,j,:)./sd(i,j,:); 
    rank_ind = [1:1:C];
  end
end

特に「min_w_index」部分の変換方法がわかりません。誰かがこの点で私を助けてくれますか?

4

1 に答える 1

4

そのような場合の最小関数の最も一般的な解決策は

int min_w = w[i][j][0];
int min_w_index = 0;
for (k = 1; k < maxk; k++)
   if (w[i][j][k] < min_w)
   {
       min_w = w[i][j][k];
       min_w_index = k;
   }

C++ のインデックスは 0 ベースですが、Matlab は 1 ベースであることを忘れないでください。あなたのコメントにはすでに問題があります。

于 2012-10-05T10:08:44.833 に答える