2013-11-10 3 views
1

제목은 기본적으로 모두를 말합니다. 여기에 현재 코드가 있지만 정확하지 않습니다. 새 줄이 아니라 \ n을 넣습니다.행렬에 대한 행렬, 행에 대한 새로운 행 matlab

매트릭스의 행을 살펴보고 행의 각 요소 사이에 공백을두고 다음 행에 새 행을 추가하고 싶습니다.

mat = [1,2,3,4;5,6,7,8]; %must work for arbitrary size matrix.. just an example 
s = ''; 
for i = 1:size(mat,1) 
    s = strcat(s,sprintf('%d ',mat(i,:))); 
    s = [s,'\n']; %and many variations of trying to add this 
end 

이 현재 산출 : 내가 좋아하는 것이 무엇 1 2 3 4\n5 6 7 8\n

은 (문자열로) :

1 2 3 4 
5 6 7 8 

나는 사람이 특정 요청을 발견하지 않은 방법을 모른다 전에 질문하지만, 나는 아무 소용이없는 수색했다!

답변

2

개행 문자 코드 10 (char(10))입니다. 그래서, 당신은 현재 sprintf를 유지하고 사용 char(10)을 할 수 있습니다

다음
s = [s,char(10)]; 

간단한 예제와 함께 일어나는 것이다 : 그것은 strcat가 줄 바꿈 스트립 밝혀졌다

>> ['one' char(10) 'two'] 
ans = 
one 
two 

, 그래서의 내용을 대체 strcat documentation에서

s = [s sprintf('%d ',mat(i,:)) char(10)]; 

:와 루프

문자 배열 입력의 경우 strcat는 공백, 탭, 줄 바꿈, 캐리지 리턴 및 양식 공급이라는 후행 ASCII 공백 문자 을 제거합니다. 문자 배열을 연결할 때 후행 공백을 유지하려면 가로 배열 연결 [s1, s2, ..., sN]을 사용하십시오. 또한

, num2str은 또한 당신이 원하는 것을 할 수 있지만, 각 번호에 1 개 이상의 자리가있을 경우 출력은 조금 다른 것보다 :

>> num2str(mat) 
ans = 
1 2 3 4 
5 6 7 8 
9 10 11 12 

없는 또 다른 펑키 솔루션 루프 :

>> s = sprintf([repmat('%d ',1,size(mat,2)) '\n'],mat') 
s = 
1 2 3 4 
5 6 7 8 
+0

죄송하지만, 제 질문은 아닙니다. 문제는 마지막 열 뒤에 새 줄을 추가하는 것입니다. 그러면 각 열 뒤에 새 행이 추가됩니다. – user2243357

+0

@ user2243357 : 방금 답변을 업데이트했습니다. 's = [s, char (10)];은 아마 당신이 필요로하는 것입니다. – chappjc

+0

실제로 임의의 크기 행렬에서 작동하려면이 함수가 필요합니다. 또한, s = [s, char (10)]가 작동하지 않습니다. 그것은 어떤 이유로 마지막 줄 다음에 새로운 줄을 만듭니다. 그리고 '1 2 3 45 6 7 8' – user2243357