2011-11-05 6 views
0

행렬 [mXn]이 있다고 가정합시다. 예 : a = [2 9; 5 7; 8 25; 1 6; 3 9].Matlab : 반복적 인 방법으로 단일 행렬의 행을 연속적으로 뺍니다.

나는 두 행 사이의 차이가 1

다음 빼기 첫 3 행에서 행과 너무 차이가 2 곳에서입니다 끝날 때까지 등등 번째 행에서 1 행을 빼기하는 방법을 알고 싶습니다

그리고 각 루프 이후에 new1의 이름은 newMatDif_1이 될 수도 있고 하나가 될 수도 있습니다.

diff1----5-2 7-9; 8-2 25-9; .......newMatDiff_1 
diff2----8-2 25-9; 3-8 9-25;.......newMatDiff_2  
diff3----1-2 6-9; .......newMatDiff_3 
+0

첫 번째 문자는 다음과 같아야합니다. '5-2 7-9; 8-5 25-7; 1-8 6-25; 3-1 9-6; ... '? – Amro

답변

0

네 명명 체계는 MATLAB에서 실제로 실현 가능하지 않거나 유용하지 않으므로 차이를 저장하기 위해 3 차원 배열을 사용했습니다. 이 작업의 핵심은 함수의 정의를 위해 배열의 행을 회전시키는 것입니다.

rotate_rows = @(A, n) ([ A((n+1):end,:); A(1:n,:)]); 

for r = 1:rows(A)-1 
    diffs(:,:,r) = a - rotate_rows(a,r); 
end 
+0

사실 내가 한 일은 내가 원하지 않는 일입니다. 문제를 자세히 설명해 드리겠습니다. ). 매트릭스가 5X2입니다. b.) 이제 R1-R2, R2-R3, ..... c를 뺍니다.) R1-R3, R2-R4, .......도 빼고 싶습니다. d .) 비슷하게 R1-R4, R2-R5, ... 여기에서 보면 뺄셈하는 행의 i 번째 갯수가 증가하고있다. 또한 각 루프마다 (for, while, do ....) 해당 루프에 대해 자동으로 이름이 지정된 파일에 저장된 답변을 얻는 방법이 있습니까? –

+0

코드를 실행 해보십시오. 찾고있는 모든 뺄셈은 실제로 계산되고 저장된다는 것을 알게 될 것입니다. 그리고 실제로는 방해가되지 않지만 더 간단한 코드를 허용하는 몇 가지 더 있습니다. MATLAB에서 루프에 대해 새로운 변수 이름을 만들거나 변수 이름을 증가시키는 것은 불가능합니다. 각 행렬을 별도의 .mat 파일에 저장할 수 있지만 해당 .mat 파일 내에는 여전히 동일한 변수 이름이 있으므로 새로운 .mat 파일없이 둘 이상의 파일을로드 할 수는 없습니다. 동일한 작업 공간 변수. 그게 니가 원하는거야? – user57368