2010-07-03 3 views
0

에서 매트릭스의 모든 값에 대한 결과를 계산,는 사용 방법은 간단 유지 MATLAB

ThDeg = 0:5:180; 
dtheta = 5*pi/180; 
dphi = 5*pi/180; 
Th = ThDeg*pi/180; 

지금 코드가

omega_iso = 0; 
for i = 1:72 
    for j=1:37 
     omega_iso = omega_iso + U_iso(i,j)*sin(Th(j))*dphi*dtheta; 
    end 
end 
인 사람이

U_iso = ones(72,37) 

및 일부 매개 변수를 즉의 행렬을

D_iso = (4 * pi)/omega_iso 

이 코드는 문제가 없습니다. 그것은 차원 72 * 37 매트릭스를 가져 가라. 루프는 안테나의 지향성을 하나의 값으로 얻기 위해 4pi로 더 나눈 적분의 근사치입니다.

이제이 코드는 약 1.002가 될 하나의 값을 제공합니다.

내 문제는 1 개의 값이 필요 없다는 것입니다. 72 * 37 행렬의 각 셀에 위의 근사치를 구현 한 경우에는 대답이 72 * 37 행렬이 필요합니다. 따라서 Directviity 'D'는 같은 크기의 행렬을 만들어서 각 셀은 같은 값을 부여합니다.

우리가해야 할 일은 1 개의 값을 얻는 대신 각 셀에 값이 필요합니다.

아무도 도와 줄 수 있습니까?

+2

팁 : 줄의 시작 부분에 공백을 두어 코드를 강조 표시 할 수 있습니다. –

+0

U와 U_iso는 같은 행렬입니까? U_iso의 두 차원이 phi와 theta에 해당합니까? 그렇다면 2D 평면에 대해 스칼라 적분을 계산합니다. 각 점 (φ, θ)에 대한 값을 원하면 다른 적분을 공식화해야합니다. –

+0

다른 (현재 마감 된) 게시물에서 몇 가지 수정 사항을 추가했습니다. 별도의 게시물을 만드는 대신 여기에서 수정하려면 "수정"링크 (주석 바로 위에 있지만 태그 아래)를 만들고 변경해야하는 다른 변경 사항이 있는지 확인하십시오. 감사. http://stackoverflow.com/questions/3171564/how-do-i-calculate-result-for-every-value-in-a-matrix-in-matlab –

답변

2

당신은 본질적으로 U의 요소의 함수 인 결과를 만드는 것에 대해 이야기합니다. 그러나 U의 요소에 의존하는 코드는 없습니다. 작성한 내용을주의 깊게보십시오. 변수 U_iso를 사용하는 동안, U가 작성한 코드의 아무 곳에서나 사용되는 요소는 없습니다.

매트릭스 U에 대해 정의하는 것에 대해 이야기하는 동안, 그 정의는 의미가 없습니다. 지금까지 repmat에 대한 호출이 원하는 크기의 행렬을 만들고 명확하게 그것이 당신이 찾고있는 것이 아닌 것으로 보입니다.

아마 당신은 설명을 쉽게하기 위해 문제를 단순하게 만들려고했습니다. 하지만 당신이 한 일은 지나치게 단순화하는 것뿐이었습니다. 지금까지 제공 할 수있는 것보다 더 나은 대답을 위해 문제를보다 명확하게 설명하고 설명과 일치하는 코드를 보여주십시오.

(참고 : 하나의 옵션은 arrayfun 사용할 수 있습니다 또는이 질문에 대한 대답은 간단 벡터화 작업을 사용하여, 더 사소한 수 있습니다 나는이 시점에서 알 수 없다...)

편집 :

귀하의 질문에 여전히 답할 수 없습니다. 이 루프는 하나의 스칼라 결과를 생성하며, 기본적으로 전체 배열을 합산합니다. U_iso의 각 요소에 대해 계산 된 적분이 의미하는 바를 말하지 않습니다. 왜냐하면 이미 전체 배열을 요약하고 있기 때문입니다. 귀하의 질문에 정확한 것을 배우십시오, 그렇지 않으면 우리는 단지 당신이 의미하는 바를 추측합니다.

현재 가장 좋은 추측은 누적 적분을 2 차원으로 계산하려는 것입니다. cumtrapz는 당신의 목표 인 경우 거기에서 당신을 도울 수 있습니다. 그러나 당신의 설명이 너무 불완전하기 때문에 그것이 당신의 목표인지는 잘 모르겠습니다.

결과의 각 셀에서 동일한 값을 얻으 려한다고 말합니다. 그것이 당신이 원하는 것이라면, 마지막에 repmat를 요청하면 원하는 것을 할 수 있습니다.

+0

죄송합니다. 실수가 있습니다. 첫 번째 줄은 U_iso = ones (72 * 37)입니다. – adeel