2012-11-08 4 views
4

나는 다음과 같은 생산하기 위해 노력하고 자신의 값의 변수 이름과 num2str 표현을 표시하려고는 : x와 y의 새로운 값은 DISP 및 num2str 명령을 사용하여, 각각 -4 7입니다. 이 disp ('x와 y의 새로운 값은 각각 num2str (x)와 num2str (y)입니다.')를 시도했지만 적절한 값 대신 num2str을주었습니다. 어떻게해야합니까?내가 MATLAB

답변

6

콜린과 마찬가지로 num2str을 사용하여 숫자를 문자열로 변환하고 모든 문자열을 수동으로 연결하고 최종 결과를 disp에 넣는 옵션이 있습니다. 불행히도 은 매우입니다. 특히 인쇄 할 숫자가 많으면 어색하고 지루합니다.

대신에 sprintf의 힘을 사용할 수 있습니다. 이것은 MATLAB에서 C 프로그래밍 언어와 매우 비슷합니다. 이것은 예를 들어, 짧은, 더 우아한 문을 생성합니다

disp(sprintf('The new values of x and y are %d and %d respectively', x, y)) 

당신은 변수가 형식 지정자를 사용하여 표시되는 방법을 제어 할 수 있습니다. x 정수가 필요하지 않은 경우 예를 들어, 대신 %d, 예를 들어, %.4f를 사용할 수 있습니다.

편집 : Jonas가 지적한 것처럼 disp(sprintf(...)) 대신 fprintf(...)을 사용할 수도 있습니다.

+1

한 아주 깔끔한. 아마 :-) –

+2

@ColinTBowers 지금부터 일을 이런 식으로 일을 시작합니다 대신 DISP'의 (sprintf와 (...))', 당신은 또한'는 fprintf (...)를'사용할 수 있습니다. 적은 타이핑 : – Jonas

+0

@Jonas +1, 나는 그것을 나의 대답에도 넣을 것이다. –

5

시도 : 그들은 코드를 더 읽기 쉽게 이럴

disp(['The new values of x and y are ', num2str(x), ' and ', num2str(y), ', respectively']); 

당신은 실제로 너무 쉼표를 생략 할 수 있지만. 다음 함께 하나의 문자열을 형성하기 위해 5 문자열을 연결해,하고 내가 여기했던 그런데

disp 기능으로 그 하나의 문자열을 공급. 숫자 행렬에 사용할 수있는 구문과 동일한 구문을 사용하여 문자열을 본질적으로 연결했습니다 (예 : [x, y, z]). 내가 이것을 할 수있는 이유는 matlab에 내부적으로 숫자 행 벡터로 문자열을 저장하고 각 문자는 요소를 나타내는 것입니다. 따라서 위의 작업은 본질적으로 수평으로 5 개의 숫자 행 벡터를 연결합니다!

하나 개 더 포인트 : MATLAB 문자열로가 아닌 함수로 num2str (X)를 처리하기 때문에 코드는 실패했습니다. 결국, 함수 호출을 사용하여 이것을 평가하는 것이 아니라 "num2str (x)"를 인쇄하려고 합법적으로 할 수 있습니다. 내 코드에서 첫 번째, 세 번째 및 다섯 번째 문자열은 문자열로 정의되는 반면 두 번째 및 네 번째는 문자열로 평가되는 함수입니다.