2013-04-09 3 views
0

루프를 사용하여 각 반복에서 다른 값을 사용하는 방법에 대한 질문이 있습니다. 145 개의 밴드가있는 이미지가 있습니다. 나는 크기, 행, 열 수 및 밴드를 계산Matlab의 루프 내부 값 변경

size=size(HYP); 
nrow= size(1); 
ncolu= size(2); 
nbands= size(3); 

나는 모든 밴드에 대한 작업을 수행 한 후 결과를 얻을해야하지만 자동으로 값 중 하나를 변경하는 방법을 모른다 모든 반복. 질문을 단순화하려고 노력할 것입니다. 이것은 내 반복이다. Rad1 값은 이전에 정의됩니다. 그래서

output= zeros(nrow,ncolu,nbands); 
for banda=1:nbands; 
     nd1= -((3.141592*rad1)/-HYP2(:,:,1)); 
output(banda,1)= (nd1); 
    end 
end 

(등 ND2 자동 ND1 변경) 각 루프 (예 band2 값 RAD2, band3 rad3 ...) 이전에 정의 된 어떤 값을 사용하는 것이 필요하고 각각에 대한 결과를 추출 첫 번째 반복에 대한 :

ND1 = - ((3.141592 * rad1)/- HYP2 (: : 1)); 출력 (banda, 1) = (nd1); 제위한

...

ND2 = - ((3.141592 * RAD2)/- HYP2 (: : 2)); 출력 (banda, 2) = (nd2);

Rad1, rad2 ... rad145 등은 이전에 정의되어 있습니다. 그리고 결국 출력은 145 밴드 매트릭스가됩니다.

어떻게 할 수 있습니까? 미리 감사드립니다.

+1

차를 확인하고 벡터를 RAD (. 그런데, 루프의 코드와 일치하지 않는 output 귀하의 초기화)? 그래서 당신은 nd (banda)와 rad (banda)를 가지고 있습니다. 또는 셀 배열을 사용하십시오. –

답변

5

다른 변수 이름을 사용하지 마십시오. 그냥 rad(1), rad(2) 등을을 사용하여 다음

output= zeros(nrow, ncolu, nbands); 
for banda=1:nbands; 
    output(:,:,banda) = -((3.141592*rad(banda))/-HYP2(:,:,1)); 
end 

+0

안녕하세요. Cristopher 님, 귀하의 빠른 답변에 감사드립니다. 문제는 rad1, rad2 등이 이전에 서로 다른 값으로 정의 된 변수라는 것입니다. 예를 들어 첫 번째 밴드의 경우 두 번째 rad2에 rad1 값을 사용해야합니다. – user1578688

+6

이러한 변수를 정의하는 코드를 변경합니다. 진지하게. 이러한 변수 이름은 단지 문제를 묻는 것입니다. (그래도 꼭 사용해야하는 경우에도 MATLAB FAQ에서 사용 방법을 알려줄 것입니다.) –

+0

크리스토퍼에게 감사드립니다. 나는 그것을 시험해 볼 것이다! ;) – user1578688