Matlab을 처음 사용하고 배열에 대해 동일한 연산을 수행 할 때 루프 대신 점 연산자를 사용하는 것이 더 빠르다고 들었습니다.배열 (Matlab)의 모든 클래스 인스턴스에 대한 호출 메서드
예 :
A = 1:200
A = A .* 10;
대신는 :
A = 1:200
for i = 1:200
A(i) = A(i) * 10;
end
I 물체의 다차원 배열 (I 객체가 생성 클래스의 인스턴스) 만들었다. for 루프를 사용하지 않고 모든 인스턴스에서 동일한 인수를 사용하여 동일한 메소드를 호출 할 수 있습니까?
나는이 3 개 접근법을 시도,하지만 그들은 작동하지 않습니다 (A는 세 가지 차원 배열) :
A(:,:,:).methodName(argument1, argument2);
A.methodName(argument1, argument2);
A..methodName(argument1, argument2);
아니요, 수동으로 루프해야합니다. 한 줄 구문을 허용하는 arrayfun/cellfun 함수가 있지만 (분명히) 후드 아래의 루프이기도하고 수동 루프보다 느려질 수도 있습니다. 행렬 곱셈과 메쏘드 호출은 두 가지 다른 것들입니다. – Mikhail
객체 배열에서도 이러한 함수 (arrayfun/cellfun)를 사용할 수 있습니까? (배열이 작기 때문에 속도가 문제가되지 않고 코드 가독성이 간소화됩니다) –
이 작업을해야합니다 :'arrayfun (@ (x) x.methodName (argument1, argument2), A)' – Mikhail