2013-04-23 3 views
0

Matlab 함수를 사용하지 않고 클래스의 알고리즘을 연결하고 for 및 while 루프를 사용하면 각 열의 요소 합계가 두 개의 새로운 벡터 1이됩니다. 다른 행은 각 행에있는 요소의 합계를 사용하여 비교합니다.for 루프를 사용하여 matlab 열과 행 요소 합계

나는이 지금까지 내가 파이썬에서 쓴 유사한 코드를 기반으로있어 :

A = input('Matrix Input: '); 
[m, n] = size(A); 

for i = 1:m; 
    sumRow = zeros(1,m); 
    for j = 1:n; 
     sumRow = sumRow + A(i,j); 
    end; 
end; 
for i = 1:n; 
    sumCol = zeros(1,n); 
    for j = 1:m; 
     sumCol = sumCol + A(j,i); 
    end; 
end; 
A %#ok<NOPTS> 
sumRow %#ok<NOPTS> 
sumCol %#ok<NOPTS> 

하지만 매트랩 내가 마지막 행과 마지막에 새로운 벡터의 요소의 합을 저장하는 얻을 수

python에서는 각 행이나 열에 대해 하나의 요소가있는 벡터를 얻습니다.

어떤 도움을 주셔서 감사합니다.

답변

0

sumRow에 올바르게 지정하지 않았으며 루프를 돌 때마다 0 벡터를 덮어 쓰고 있습니다.

sumRow = zeros(1,m); 
for i = 1:m; 
    for j = 1:n; 
     sumRow(i) = sumRow(i) + A(i,j); 
    end; 
end; 

sumCol = zeros(1,n); 
for i = 1:n; 

    for j = 1:m; 
     sumCol(j) = sumCol(j) + A(j,i); 
    end; 
end; 

이 방법, 당신은 sumRow외부 루프를 만들고, sumRow의 i 번째 요소는 행의 모든 ​​컬럼의 합이 될 것입니다 : 코드는 다음과 같아야합니다.

+0

감사하지만 "numRow (= sumRow) = 1"이기 때문에 "sumRow (2);에 액세스하려고했습니다."라는 오류 메시지가 나타납니다. – user2052579

+0

올바르게 복사 했습니까? 난 아무 문제없이 그냥 테스트 해 봤어. 그 오류는'i'가'1'에서'm'으로 바뀌고''sumRow''가''m''으로 초기화되기 때문에 절대로 발생할 수 없습니다. – jazzbassrob

+0

두 가지 벡터가 동일하기 때문에 어떤 오류가 있었는지 확실하지 않지만 두 번째 행에서 A의 전치 행을 검사하도록 수정했습니다. 고마워요! – user2052579

관련 문제