0
기본적으로 매트릭스의 지정된 열을 꺼내기 위해 아래 코드를 루프에서 실행하고 있습니다. 내 루프에서 병목 현상이 발생하는 곳이라는 느낌이 들었습니다. 행렬 산술처럼 쉽게 할 수있는 것처럼 느껴지지만 지금은 아무 것도 생각할 수 없습니다. 아래 함수는 인수 matINPUT을 큰 행렬로 취하고 INPUT을 원하는 열의 정수 오프셋으로 취합니다. 결과는 프로그램의 다른 곳에서 사용하기 위해 arrayOUTPUT에 저장됩니다.Matlab에서 매우 큰 (> 1GB) 배열의 변수를 열로 가져 오는 가장 빠른 방법은 무엇입니까?
// Get size and offset of matrix
[matOffset, matSize] = size(matINPUT);
// Test if INPUT isnt out of bounds, and return 0 if it is
if INPUT > matSize then
arrayOUTPUT = [0]
return
end
// pre-load array for correct size
arrayOUTPUT = zeros(matOffset,1) // generates the correct array size
// iterate through all slots and populate
for x = 1:matOffset
arrayOUTPUT(x) = matINPUT(x + (INPUT - 1)*matOffset)
end
이 사용 해봤'arrayOUTPUT = matINPUT (:, colnum)', colnum'이고' 선택할 열 번호? ':'는'colnum'에있는 모든 열, 즉 전체 열을 선택합니다. MATLAB이 열 전공이기 때문에 이것이 꽤 빠르다고 생각합니다. 당신이 이것을하고 있다면 미리 할당 할 필요도 없습니다. – Justin
옙 @jucestain 난 바보 야. 네이티브 솔루션은 제가 생각한 것입니다. 그러나 슬프게도 단지 10k 반복 당 두 번째를 깎아 내린 것 같아요. 4-5 내가 바라는 것은 아닙니다. 감사! – AlexCU