2012-01-14 2 views
2

여러 변수에 함수를 적용하고 싶습니다. 이것을 할 수있는 좋은 방법이 있습니까?변수에 대한 MATLAB 루프 (초보자)

처럼 :

M = ones(2,2) 
N = zeros(3,3) 
M = M + 1 
N = N + 1 

작동하지만 나는 일종의 뭔가 할 싶습니다

M = ones(2,2) 
N = zeros(3,3) 
L = ?UnknownStructure?(M, N) 
for i = 1:length(L) 
    L(i) = L(i) + 1 
end 

또는 전체 변수 집합에 함수를 적용 할 수있는 더 좋은 방법이 있습니까?

+0

나는'evalin'을 사용할 수 있다고 생각하지만 추천하지는 않습니다. –

답변

4

당신이 사용할 수있는 세포 :

M = ones(2,2) 
N = zeros(3,3) 
L = {M, N}; 
[email protected](x) x+1; 
L2=cellfun(funct, L, 'UniformOutput',false); 
0

시도 :

a = ones(2,2) 
arrayfun(@(x) 2*x , a) 

당신은 당신이 원하는 기능 (2*x)를 만들 수 있습니다.

+0

이 함수를 여러 행렬에 적용하는 방법을 아직 알지 못합니다. – rallen

2

같은 매트릭스를 가리키는 두 개의 서로 다른 변수 이름을 가질 수있는 의미에서 매트랩 참조, 같은 것은 없다.

그러나 행렬 배열을 가질 수 있습니다.

L = { M, N }; 
for i = 1:length(L) 
    L{i} = L{i} + 1 
end 

이 코드를 옥타브에서 테스트했습니다. 그러나주의 : 소스 행렬 M, N은 이것에 의해 변경되지 않습니다.