2013-02-15 4 views
1

여기에있는 아이디어는 데이터를 행렬로 읽어 들이고 그 행렬을 행렬이나 행을 제거하여 사각형 행렬로 만들지 만 벡터화는 사용하지 않고 루프는 if/else를 전혀 사용하지 않고 루프합니다. 이것이 가능한가? MATLAB이 과정에서 벡터화하는 방법

내가 그것을 루프를 수행 한 방법입니다/다른

load file.dat 
r = num2str(size('file',1)) 
c = num2str(size('file',2)) 
while (r~=c) 
    if (r>c) 
     r-- 
    else (c>r) 
     c-- 
end 
res = file(1:r,1:c) 
save('squarefile.dat', 'res', '-ascii') 

당신에게

+3

죄송합니다. - 최소를 계산하는 데 가장 비효율적 인 알고리즘 중 하나 여야합니다. – bdecaf

+0

@bdecaf - 나는 O (2^n) ;-)로 최소 계산을위한 또 다른 알고리즘을 연구 중이다. – Shai

+2

이것은 유효한 matlab 구문이 아닙니다. 나는 당신이'r -'및'c -'대신에'r = r-1'과'c = c-1'을 의미하는 것 같아요. –

답변

4

감사하면 사각형입니다, 우리는 매트릭스 B를 만듭니다 N × M 개의 큰 행렬 A을 감안할 때 행렬 초과 열 또는 행을 제거 A으로부터 (더 큰 차원을 따라)

그런데
B=A(1:min(size(A)),1:min(size(A))); 

는이 광고도있을 수 WRI A을 덮어 쓰고 여분의 정보를 삭제하려는 경우 A=A(1:min(size(A)),...)으로 지정하십시오.