I have written the equations to Proving Parseval's Relation but are giving me different answers Can you help?
이전 댓글 표시
function sig_out=M1_3(f0,fs,dur,N)
clear all
close all
clc
if (nargin == 0)
fs=8000;
f0=25;
dur=1/f0;
N=[20];
end
f = zeros(1,N);%sets all values to 0 from 1 to N
a = zeros(1,N);%sets all values to 0 from 1 to N
p = zeros(1,N);%sets all values to 0 from 1 to N
for i= 1:2:N
f(i)=i*f0;
a(i)=4/(pi*i);
p(i)=pi/2;
end
sig_out=sumcos(f,a,p,fs,dur);
t = 0:1/fs:dur;
for j=1:2:N
%plot(j,(a(j)/N),'*');
%xlabel('K')
%ylabel('|X[k]/N|')
%title('Magnitude of line Spectrum of X[n] respectively')
%plot(j,(57.2957795*p(j)),'+');
%xlabel('K')
%ylabel('Phase of X[k] in degrees')
%title('Phase of line Spectrum of X[n] respectively')
%plot(j,(a(j)/N)^2,'d');
%xlabel('K')
%ylabel('(X[k]/N)^2')
%title('Power line Spectrum of discrete periodic signal X[n]')
hold on
end
hold off
%Trying to Prove Parseval's Relation
%from time signal directly
xn=sum(sig_out.*sig_out)/(length(sig_out))
%from power line spectrum
XK=(sum((a/N).^2))
답변 (2개)
Dr. Seis
2011년 10월 31일
Make sure the way you define things is consistent with the following definitions:
If:
- fs = sample rate (samples per second)
- N = number of samples
Then:
- dt = time increment (1/fs)
- df = frequency increment (fs/N)
- dur = duration of signal (1/df)
- t = time range (0:dt:(N-1)*dt)
- Nyq = Nyquist frequency (fs/2)
- f = frequency range (-Nyq:df:Nyq-df)
If you make sure that the way you define things in the time domain and frequency domain is consistent with the above definitions, then you should have no problem proving that the power in the time domain is equal to the power in the frequency domain.
Wayne King
2011년 10월 31일
Why not just use:
x = randn(1e3,1);
norm(x)
xdft = fft(x);
norm(xdft./sqrt(length(x)))
카테고리
도움말 센터 및 File Exchange에서 Time Series Events에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!