나는 현재 C++ 코드를 Matlab으로 변환중이다. 몇년째 여러번 시도를 했었는데 계속 실패를 한터라, 아예 포기하다 시피 미루어 왔었는데, 요번엔 마지막 이라 생각하고 line by line으로 조급증까지 없애며 코드를 변환중이다. 벌써 약 두주째다. 5개의 코드를 변환하애 하는데, 다행히도 4개를 완성했다.
그러나 가장 쉽다고 생각한 마지막 한개에서 결과값이 영 이상하다. 그래서 Excel로 수동으로 계산해 보는 등 별 방법을 다 동원중이다. 그리고 결국 마지막 의심이 C++과 Maltlab의 loop의 순서에 대한 의심이다.
가령 다음과 같은 loop으로 만들어진 코드인데
for i=1:1000
for j=1:1000
for k=1:1000
for l=1:200
if a>b
do something
end
end
end
end
end
가령 행렬의 크기는 5000*30000 인데, 각 행의 값들을 sum을 해서 이 Matlab과 C++의 30000개의 sum값들이 순서는 다르지만 결국 같다는 것을 확인해 보고 싶었다.
가령 Matlab에서
a= [2,2,2,1,1,3,2,1,3,3,2];
unique(a)
ans = 1 2 3
histc(a, unique(a))
ans = 3 5 3
그리고 C++의 각행의 sum값이 다음과 같다면....(일부 순서만 바꾸었어요..)
b= [2,1,1,3,2,1,3,2,2,3,2];
unique(a)
ans = 1 2 3
histc(a, unique(a))
ans = 3 5 3
결국 비록 순서가 틀리지만 구한 값들은 동일하므로, Matlab으로 C++ 코드를 잘 변환했다는 증거가 된다.
https://math.aalto.fi/opetus/Mattie/Blogi/Matlab/html/countoccurrences.html