Why the sums of cos(x) over 2*pi range not zero?
    9 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
when evaluating the following codes:
t = linspace(-pi,pi,128); s = sin(t); c = cos(t); sum(s), sum(c)
ans =
     6.811558403281303e-15
ans =
-0.999999999999978
Q: should not both be zero?
and try
 sum(c(2:end))
ans =
   2.5313e-14
also quad(@cos,-pi,pi)
ans =
   4.0143e-09
Q: Why the discrepancy?
Thank you for your input.
Thanks J
0 Kommentare
Akzeptierte Antwort
  Greg Heath
      
      
 am 11 Jul. 2012
        T = fundamental period
N = number of samples
dt = T/N sampling interval
f0 = 1/T fundamental frequency
(n-1)*f0 harmonics 1<=n <= N
Orthogonality interval
t = t0:dt:t0+T-dt;
t = t0+[0:dt:T-dt];
t = t0+dt*[0:N-1];
help fft
doc fft
Hope this helps
Greg
2 Kommentare
Weitere Antworten (3)
  Luffy
      
 am 11 Jul. 2012
         In matlab, 
 sin(pi) = 1.2246e-16
 The expression sin(pi) is not exactly zero because pi is not exactly π
0 Kommentare
  Wayne King
    
      
 am 11 Jul. 2012
        
      Bearbeitet: Wayne King
    
      
 am 11 Jul. 2012
  
      If you're trying to establish some equivalence between the integral of cos(t) from -pi and pi and the sum of cos(t), you're forgetting a very important part and that is the dt
    t = linspace(-pi,pi,1000);
    dt = (pi-(-pi))/length(t);
    sum(cos(t))*dt
Using other integration routines in MATLAB is more robust than what I've done, but you see it gets you much closer to zero. Think about the formula for a Riemann sum.
1 Kommentar
  Wayne King
    
      
 am 11 Jul. 2012
        I don't think you can say that simply summing cos(t) on an arbitrary grid should be zero. You have to be careful how the grid is constructed. For example
k = 1;
N = 100;
t = 0:99;
sum(cos(2*pi*k/N*t))
sum(sin(2*pi*k/N*t))
are both zero, because I used a Fourier frequency and a specific discrete-time vector. This has to do with the orthogonality of the N-th roots of unity.
Siehe auch
Kategorien
				Mehr zu Matched Filter and Ambiguity Function finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!