Matlab gpuArrays를 사용하여 가장 가까운 값과 같은 일부 계산 결과로 가장 작은 값의 인덱스를 찾고 싶습니다.Matlab GPU에서 arrayfun을 사용하는 행
그러나 arrayfun 시나리오에서 min 함수는 기능을 제공하지 않는 것 같습니다.
function grid_gpu_test
gridSize = 8;
grid = gpuArray(rand(gridSize));
all_c=1:gridSize; % because : is not supported
function X = min_diff(row)
X = min(abs(grid(row,all_c)-grid(row,1)))
end
rows = gpuArray.colon(2, gridSize)';
arrayfun(@min_diff, rows)
end
나는 다음과 같은 오류 얻을 :
Too few input arguments supplied to: 'min'. Error in 'grid_gpu_test' (line: 9)
이를 달성 할 수있는 방법이 있나요를 다음 코드로
? 나는 그것이 arrayfun에 없을 때 min(gpuArray)
을 사용할 때 정상적으로 작동한다는 것을 알고 있지만 행렬 작업으로 단순화하지 않는 작업으로이 작업을 수행하려고합니다.
고맙습니다! arrayfun을 사용하려는 이유는 첫 번째 열과 각 열의 차이보다 복잡한 연산을 수행하기 위해서입니다. 나는 명시 적으로 저장하지 않고 각 요소에 가장 가까운 5x5 이웃을 찾고 싶다. 그게 의미가 있습니까, 아니면 내가 질문 코드를 재조정해야합니까? – MrMartin
gridsize + 1이 아니어야합니다. 고쳤다. – MrMartin