matlab에서 주어진 주파수에 대한 감쇠 정현파의 감쇠 상수 값을 찾는 방법은 무엇입니까?주어진 주파수에 대한 감쇠 된 사인파 감쇠 계수 MATLAB
t=0:1e-6:0.1;
f= 500000;
y=sin(2*pi*f*t).*exp(-d*t);
나는 "D"
matlab에서 주어진 주파수에 대한 감쇠 정현파의 감쇠 상수 값을 찾는 방법은 무엇입니까?주어진 주파수에 대한 감쇠 된 사인파 감쇠 계수 MATLAB
t=0:1e-6:0.1;
f= 500000;
y=sin(2*pi*f*t).*exp(-d*t);
나는 "D"
당신에게 봉투 당신의 진동 기능의 찾을 먼저 필요 (기능 당신의 사인을 진폭 - 변조)에 대한 방정식 위의 해결하고자합니다. 예를 들어, 신호를 정류 한 후 저역 통과 필터링을 실시하지만, 나는 빠르고 더러운 최대를 선택한다. 엔벨로프를 찾으면 지수 함수를 적용하는 다양한 방법이 있습니다. 다시 한번 봉투의 로그에 일차 polyfit을 수행하기 위해 빠른 &을 선택했습니다. 아래의 코드는 여러분이 제시 한 간단한 예제에서 작동하지만 오프셋이있는 경우 작동하지 않을 수 있습니다. n
등을 선택하면 잡음이 발생합니다. 또한 잡음이있는 측정의 경우 최상의 결과를 얻을 수 없습니다. 지수 형 감쇠와는 시정 tau = 1/d
를 정의하는 것이 일반적이다
fsamp = 1e5;
tmax = 0.1;
t=0:1/fsamp:tmax;
f = 12e3; %should be smaller than fsamp/2!
tau = 0.0765;
y=sin(2 * pi * f * t) .* exp(-t/tau);
%calculate running maximum
n = 20; %number of points to take max over
nblocks = floor(length(t)/n);
trun = mean(reshape(t(1:n*nblocks), n, nblocks), 1); %n-point mean
envelope = max(reshape(y(1:n*nblocks), n, nblocks), [], 1); %n-point max
%quick and dirty exponential fit, not the proper way in case of noise
p = polyfit(trun, log(envelope), 1);
tau_fit = -1/p(1);
k_fit = exp(p(2));
plot(t, y, trun, envelope, 'or', t, k_fit * exp(-t/tau_fit), '-k')
title(sprintf('tau = %g', tau))
참고.
니스. 당신은 무엇이 요구되었는지 알았을 것입니다. 'envelope = abs (hilbert (y));'도 사용할 수 있습니다 (전체 기간을 사용하거나 출력을 트리밍하는 데주의를 기울여야 함). – horchler
안녕하세요, 'd'값은 시스템에 따라 다릅니다. 컨텍스트를 좀 더 알려주시겠습니까? – MattG
당신의 질문이 맞습니까? 주어진 주파수에서'd'를 풀고 싶다면'y'는 무엇입니까? 당신은 제약이 없습니다. 그렇지 않으면 방정식은 기본 대수를 사용하여'd'에 대해 풀 수 있습니다. 특정 파형이있는 경우 [로그 감소 방법] (http://en.wikipedia.org/wiki/Logarithmic_decrement)을 살펴볼 수 있습니다. 그렇지 않으면, 이것이 Matlab 질문인지 확신 할 수 없습니다. – horchler
커브 피팅에 대한 질문이 있습니다. http://stackoverflow.com/questions/16110185/how-to-fit-a-curve-to-a-damped-sine-wave-in-matlab (@wakjah 대답 참조) . – marsei