2011-04-13 42 views
2

一部のC++コードをMATLABに変換しようとしていますが、問題があります。誰かが下から1行のコードを説明してくれますか?C++をMATLABに変換する

int *image  = (int *) malloc(size*sizeof(int)) ; 

    bool diff = true; 
    while (diff) 
    { 
    diff = false; 
    for (unsigned int itt = 0; itt < size; itt++) 
    { 
     diff = diff || (image[itt] != image[image[itt]]); 
     image[itt] = image[image[itt]]; 
    } 
    } 

誰かが

この部分

diff = diff || (image[itt] != image[image[itt]]); 
    image[itt] = image[image[itt]]; 

から説明してもらえ

image[image[itt]] 

私は、これはMATLAB

誰誰にも
Image = zeros(100,100); 

ImageSize = (Image); 
diff = true; 

while(diff) 
    diff = false; 
    for x=1:ImageSize(1) % Height 
     for y=1:ImageSize(2) % Width 
     diff = diff || (image(x,y) ~= ????); 
     image(x,y) = ????; 
     end 
    end 
end 

感謝の面でどのように機能するかを理解していません私はunderstanを助けることができますdこれ。

+1

あなたはC++コードがやっていることを理解していませんか?それともMatlabでそれを行う方法を理解していないのですか? – Phonon

答えて

4

まず、ImageSize = (Image);は正しくありません。これにより、ImageImageSizeに割り当てられます。代わりにImageSize = size(Image);を使用してください。

第2に、Matlabコードではダブルインデックスを使用していますが、C++コードではシングルインデックスを使用しています。

while(diff) 
    diff = false; 
    for n=1:numel(Image) %# Total pixels in the image 
     diff = diff || (Image(n) ~= Image(Image(n))); 
     Image(n) = Image(Image(n)); 
    end 
end 

行列を転置する必要があるかもしれません。なぜなら、C++コードが列単位または行単位で動作するかどうかはわからないからです。また、マトリックスをすべて0に初期化するので(zeros(100,100);)、すべてのゼロを結果として戻します。実際のイメージまたは少なくともランダムな整数に初期化してみてください。

乾杯!

+0

ありがとうございました:) – Sharpie

関連する問題