2014-12-15 3 views
-2

는 내가 가로 좌표 축을 중심으로 원을 원하지 않는matlab에 (줄기 기능)

Y=fft(y); %fourier transformation 
n=size(y,2)/2; 
AS=abs(Y)/n; %absolute value 
set(figure, 'Position', [0 0 500 300]) %left,bottom,width,height 
freq=(0:79)/(2*n*dt); 
stem(freq,AS(1:80)); 

이 기능이 서클. 나는 그것들을 오직 그래프의 꼭대기에 갖고 싶다.

+0

의미가 명확하지 않습니다. 원은 (freq (i), AS (i))에 있고 횡축은 아닙니다. AS == 0이 아니라면 그 위치가되어야합니다. – AnonSubmitter85

+0

AS에서 0보다 큰 값을 묘사하는 조건을 만드는 방법은 무엇입니까? –

답변

2

당신은 ASNaN에 0 간단하게 설정이 값과 동일한 것이 포인트 음모를 꾸미고 건너 뛰고 다음 그래프를 그릴 수 있습니다

Y=fft(y); %fourier transformation 
n=size(y,2)/2; 
AS=abs(Y)/n; %absolute value 
set(figure, 'Position', [0 0 500 300]) %left,bottom,width,height 
freq=(0:79)/(2*n*dt); 

%// NEW 
ASval = AS(1:80); 
ASval(ASval == 0) = NaN; 
stem(freq,ASval); 

무엇이 일어날 것은있는 모든 지점이 정확히 0이되지 않을 것입니다 NaN 삽입으로 인해 플롯됩니다. 0이 아닌 값은 일반적으로 stem으로 그려집니다.


일반적으로 부동 소수점 정밀도 때문에 정확히 0 인 요소를 찾는 것이 좋지 않을 수 있습니다. 따라서 값이 지정된 임계 값 내에 있는지 확인하고이 값이있는 경우이 값을 NaN으로 설정하는 것이 좋습니다. 데이터가 엄격하게 양수이기 때문에 수평 축의 음수 쪽에서 접근하는 값을 확인할 필요가 없습니다. 귀하의 의견에 명시된 바와 같이 0.15을 사용했습니다. 따라서 위의 내용 대신 간단히이 작업을 수행하십시오.

%// NEW 
ASval = AS(1:80); 
ASval(ASval < 0.15) = NaN; 
stem(freq,ASval); 
+0

대단히 감사합니다.하지만 ASval (ASval == 0) = NaN; ~ ASval (ASval <0.15) = NaN; –

+0

@KarolVojtek - 괜찮습니다! 나는 정확하게 문턱 값이 무엇인지 알지 못 했으므로 0으로 만들었습니다. 데이터에 좋은 점에 따라 문턱 값을 만들 수 있습니다. 행운을 빕니다! – rayryeng