2011-04-13 3 views
2

일부 C++ 코드를 MATLAB으로 변환하려고하는데 문제가 있습니다. 누군가가 아래에서 한 줄의 코드를 설명해 주시겠습니까?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]]; 
    } 
    } 

사람이이 사람에게 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 

감사를 작동하는 방법

image[image[itt]] 

이해가 안

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

이 부분에서 설명 할 수있는 사람 내가 이해할 수있게 도와 줘. 이거.

+1

그래서 C++ 코드가 제대로 작동하는지 이해하지 못합니까? 아니면 Matlab에서 어떻게하는지 이해하지 못합니까? – Phonon

답변

4

우선 ImageSize = (Image);이 올바르지 않습니다. 단순히 ImageImageSize에 할당합니다. 대신 ImageSize = size(Image);을 사용하십시오.

둘째, 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을 얻습니다. 실제 이미지 또는 적어도 임의의 정수로 초기화 해보십시오.

건배!

+0

고마워요 :) – Sharpie

관련 문제