2012-01-28 3 views
1

matlab 콘솔에서 이중 데이터보기에 문제가 있습니다. 사실, 데이터 파일에서 행렬을 가져오고 있습니다. 특정 행과 열의 값은 1.543 이었지만 콘솔에서 disp(x)을 사용했을 때 x이 가져온 매트릭스 인 경우 1.0e+03 * 0.0002으로 표시됩니다. 그러나 disp(x(25,25))을 사용하여 행렬의 해당 특정 요소에 액세스하려고 시도하면 2525이 행 번호와 열 번호가 1.543 인 것으로 나타납니다. 그래서 나는 혼란 스럽다. 모든 설명. 전체 행렬을 인쇄 할 때 1.0e+03 * 0.0002으로 표시됩니다.이중 값보기 문제

답변

2

다음 명령으로 해결해야합니다. 디스플레이 문제 일 뿐이며 매트릭스의 실제 값의 정밀도는 영향을받지 않습니다.

format shortG 
2

데이터의 높은 동적 범위로 인해 발생합니다. 예보십시오

x = [10^-10 10^10]; 
disp(x); 

결과가 :

1.0E + 010 *
0.0000 1.0000

그것은 첫번째 값이 0과 같은 보이지만 그렇지 않습니다. 두 번째 것에 비해 거의 제로입니다. 놀라운 일은 아닙니다. 작은 값을 큰 값에 더하고 빼기를 시도하면 0이됩니다. true

이 이 이

이 무슨 짓을 할 수

isequal((x(1)+x(2)) - x(2) , 0) 
는 그 표현 다음과 같은 점 arithmetic.The 부동 때문이다?

1) 매우 높은 동적 범위는 모든 종류의 계산에서 문제를 일으킬 수 있습니다. 문제의 원인을 이해하고 광범위한 문제를 해결하십시오.

2). 당신은이 상황 사례 중 일부에 대한 시각적으로을 향상시킬 수 있습니다

format long 

을 설정하려고 할 수 있습니다.