2010-06-28 2 views
0

날이 코드를 이해하는 데 도움이 바랍니다 무엇 :다음 MATLAB 코드의 평균이

x(:,i) = mean((y(:,((i-1)*j+1):i*j)), 2)'; 

내가 내 책에서 찾을 수 없습니다. 감사.

 a  = (i-1)*j+1; 
     b  = i*j; 
     val  = y(:,a:b); 
     x(:,i) = mean(val, 2)'; %# =mean(val') 

당신이 이해하지 못하는 정확히 무엇 :

답변

4

당신이 게시 코드는 임시 변수를 사용하여 가독성을 할 수 있습니까? mean의 의미는 :'입니다. matlab 도움말을 참조하십시오.

+0

'의 평균을 찾을 수 없습니다. – nata

+0

http://www.mathworks.com/access/helpdesk/help/techdoc/ref/arithmeticoperators.html – yuk

1

배열 x의 i 번째 열은 배열 y의 j 번째 열 그룹의 평균입니다.

예를 들어, i가 1이고 j가 3이면 x의 첫 번째 열은 y의 처음 세 열의 평균입니다.

2

당신이 이해하지 못하는 정확하게 말했다 경우 도움이 될,하지만 여기에 몇 가지 팁입니다

  1. 당신이 같은 경우 (r은, C), 행렬 A를 의미가 행 r, c 열 (항상이 순서대로). 즉 괄호 안에 쉼표로 구분 된 두 개의 요소가 있어야합니다. 첫 번째 행은 행을 나타내며 두 ​​번째 요소는 쉼표로 구분됩니다.

  2. 다음과 같은 경우 : 쉼표의 한쪽에 "all"을 의미합니다. 따라서, (r, :)가 있다면 행렬 a, 행 r, 모든 열을가집니다.

  3. 쉼표의 한쪽에만 혼자있는 것이 아니라면 "~"을 의미합니다. 그래서 당신이 (r, z : y)를 가졌다면 행렬 a, 행 r, 열 z에서 y를 의미합니다.

  4. 평균 = 평균. Matlab의 함수 형식은 M = mean (A, dim)입니다. A는 평균 (또는 평균)을 취하는 행렬이 될 것이고, M은 결과가 나타날 곳이 될 것입니다. dim = 1 인 경우 각 요소가 열의 평균이되는 행 벡터를 가져옵니다. dim = 2 인 경우 (귀하의 경우), 각 요소가 행의 평균이되는 열 벡터를 가져와야합니다. 코드 끝에을주의하십시오. 왜냐하면 코드의 끝 부분에 ', 이것은 중첩을 의미하기 때문입니다. 즉, 열 벡터가 행 벡터로 변환됩니다.

확인, 코드 있도록 : 내부 비트

x(:,i) = mean((y(:,((i-1)*j+1):i*j)), 2)'; 

시작, 그

y(:,((i-1)*j+1):i*j) 
그래서

말하고있다

행렬 Y (R, C)

R (행)이다, 즉, 모든 행

C는 (열) ((I-1) J + 1)이다 난 J, 즉, 열 I- (부터 예정 1) J + 1 전까지 J

그때 R, C) (Y라는 것으로부터 얻어진 행렬을 얻을 것이고, 다음 할 것이다 번호 :

mean((y(r,c), 2) 

하기 때문에 얻을 위에서 얻은 결과와 각 행의 평균 (평균)을 취합니다. 귀하의 코드가 '나중에'즉, 당신은 가지고있다 :

mean((y(r,c), 2)' 

그러면 그것은 열 벡터를 가져 와서 행 벡터로 변환 할 것이다. 이 행의 각 요소는 y (r, c) 행의 평균이됩니다. 마지막

:

x(:,i) = mean((y(r,c), 2)'; 

는 결과가 상기 행렬 X의 열 I에 배치된다는 것을 의미한다.

대신 x (i, :) 여야하지 않습니까?

+0

오우, 알겠습니다. 나는 단지 '의 평균을 찾을 수 없다. 설명해 주셔서 감사합니다. – nata

+2

@nata :이 게시물이 마음에 들면 투표하세요. – Mikhail

관련 문제