"Chen Sagiv" <chensagivron@gmail.com> wrote in message
<g0e20u$kmt$1@fred.mathworks.com>...
> Dear friends,
>
> I have a strange phenomenon.
> I have a cosine wave. I take two instances of it.
>
> I call the first Case 1, where I have 10 cycles of this
> wave. Case 2 is 10 cycle + one extra point.
>
> Now, when I calculate the FT of both signals, I get a non
> zero imaginary value for the second case.
>
> If I try to calculate the phase, and use either atan,
> atan2, angle and phase commands I get a linear phase.
>
> Isn't it Gibberish ? How does Matlab generate linear
phase
> when the imaginary part of the FT is practically zero ?
>
> I would be happy to get comments on this issue.
>
> Thanks,
>
> Chen
Sorry, forgot to attach the code:
close all;
clear all;
% Constants
T = 10;
w0 = 2*pi;
sigma = 1;
% Case 1: there are 10 cycles of the cosine function
t1 = 0:0.01:10-0.01;
f1 = cos(w0*t1);
fw1 = fftshift(fft(f1));
% Case 2: there are 10 cycles + 1 point
t2 = 0:0.01:10;
f2 = cos(w0*t2);
fw2 = fftshift(fft(f2));
On May 14, 6:52=A0pm, "Chen Sagiv" <chensagiv...@gmail.com> wrote:
> "Chen Sagiv" <chensagiv...@gmail.com> wrote in message
>
> <g0e20u$km...@fred.mathworks.com>...
>
>
>
>
>
> > Dear friends,
>
> > I have a strange phenomenon.
> > I have a cosine wave. I take two instances of it.
>
> > I call the first Case 1, where I have 10 cycles of this
> > wave. Case 2 is 10 cycle + one extra point.
>
> > Now, when I calculate the FT of both signals, I get a non
> > zero imaginary value for the second case.
>
> > If I try to calculate the phase, and use either atan,
> > atan2, angle and phase commands I get a linear phase.
>
> > Isn't it Gibberish ? How does Matlab generate linear
> phase
> > when the imaginary part of the FT is practically zero ?
>
> > I would be happy to get comments on this issue.
>
> > Thanks,
>
> > Chen
>
> Sorry, forgot to attach the code:
>
> close all;
> clear all;
>
> % Constants
> T =3D 10;
> w0 =3D 2*pi;
> sigma =3D 1;
> % Case 1: there are 10 cycles of the cosine function
> t1 =3D 0:0.01:10-0.01;
> f1 =3D cos(w0*t1);
> fw1 =3D fftshift(fft(f1));
>
> % Case 2: there are 10 cycles + 1 point
> t2 =3D 0:0.01:10;
> f2 =3D cos(w0*t2);
> fw2 =3D fftshift(fft(f2));
>
> figure ;
> subplot(3,2,1); plot(real(fw1),'.k');
> title('Case 1: real FT');
> subplot(3,2,3); plot(imag(fw1),'.k');
> title('Case 1: imag FT');
> subplot(3,2,5); plot(atan2(imag(fw1), real(fw1)),'.');
> title('Case 1: phase of FT');
> subplot(3,2,2); plot(real(fw2),'.k');
> title('Case 2: real FT');
> subplot(3,2,4); plot(imag(fw2),'.k');
> title('Case 2: imag FT');
> subplot(3,2,6); plot(atan2(imag(fw2), real(fw2)),'.');
> title('Case 2: phase of FT');
>
> Best,
>
> Chen- Hide quoted text -
>
> - Show quoted text -
It's called "leakage". It's a feature of the FFT, so don't for a
moment think you've discovered something new.
There's a very good explanation in E Oran Brigham's book Fast Fourier
Transform published in 1973.
NZTideMan <mulgor@gmail.com> wrote in message <5784b2e7-
6422-4da5-bbfa-6f93523e0635@k10g2000prm.googlegroups.com>...
> On May 14, 6:52=A0pm, "Chen Sagiv"
<chensagiv...@gmail.com> wrote:
> > "Chen Sagiv" <chensagiv...@gmail.com> wrote in message
> >
> > <g0e20u$km...@fred.mathworks.com>...
> >
> >
> >
> >
> >
> > > Dear friends,
> >
> > > I have a strange phenomenon.
> > > I have a cosine wave. I take two instances of it.
> >
> > > I call the first Case 1, where I have 10 cycles of
this
> > > wave. Case 2 is 10 cycle + one extra point.
> >
> > > Now, when I calculate the FT of both signals, I get a
non
> > > zero imaginary value for the second case.
> >
> > > If I try to calculate the phase, and use either atan,
> > > atan2, angle and phase commands I get a linear phase.
> >
> > > Isn't it Gibberish ? How does Matlab generate linear
> > phase
> > > when the imaginary part of the FT is practically
zero ?
> >
> > > I would be happy to get comments on this issue.
> >
> > > Thanks,
> >
> > > Chen
> >
> > Sorry, forgot to attach the code:
> >
> > close all;
> > clear all;
> >
> > % Constants
> > T =3D 10;
> > w0 =3D 2*pi;
> > sigma =3D 1;
> > % Case 1: there are 10 cycles of the cosine function
> > t1 =3D 0:0.01:10-0.01;
> > f1 =3D cos(w0*t1);
> > fw1 =3D fftshift(fft(f1));
> >
> > % Case 2: there are 10 cycles + 1 point
> > t2 =3D 0:0.01:10;
> > f2 =3D cos(w0*t2);
> > fw2 =3D fftshift(fft(f2));
> >
> > figure ;
> > subplot(3,2,1); plot(real(fw1),'.k');
> > title('Case 1: real FT');
> > subplot(3,2,3); plot(imag(fw1),'.k');
> > title('Case 1: imag FT');
> > subplot(3,2,5); plot(atan2(imag(fw1), real(fw1)),'.');
> > title('Case 1: phase of FT');
> > subplot(3,2,2); plot(real(fw2),'.k');
> > title('Case 2: real FT');
> > subplot(3,2,4); plot(imag(fw2),'.k');
> > title('Case 2: imag FT');
> > subplot(3,2,6); plot(atan2(imag(fw2), real(fw2)),'.');
> > title('Case 2: phase of FT');
> >
> > Best,
> >
> > Chen- Hide quoted text -
> >
> > - Show quoted text -
>
> It's called "leakage". It's a feature of the FFT, so
don't for a
> moment think you've discovered something new.
> There's a very good explanation in E Oran Brigham's book
Fast Fourier
> Transform published in 1973.
Dear NZTideMan,
I am afraid you completely missed my point.
I am not referring to the leakage (thanks for the reference
though), but to the linear phase that seems to be
calculated with no reason.
If you can refer to this point, i will appreciate it.
On May 14, 7:20=A0pm, "Chen Sagiv" <chensagiv...@gmail.com> wrote:
> NZTideMan <mul...@gmail.com> wrote in message <5784b2e7-
>
> 6422-4da5-bbfa-6f93523e0...@k10g2000prm.googlegroups.com>...
>
>
>
>
>
> > On May 14, 6:52=3DA0pm, "Chen Sagiv"
> <chensagiv...@gmail.com> wrote:
> > > "Chen Sagiv" <chensagiv...@gmail.com> wrote in message
>
> > > <g0e20u$km...@fred.mathworks.com>...
>
> > > > Dear friends,
>
> > > > I have a strange phenomenon.
> > > > I have a cosine wave. I take two instances of it.
>
> > > > I call the first Case 1, where I have 10 cycles of
> this
> > > > wave. Case 2 is 10 cycle + one extra point.
>
> > > > Now, when I calculate the FT of both signals, I get a
> non
> > > > zero imaginary value for the second case.
>
> > > > If I try to calculate the phase, and use either atan,
> > > > atan2, angle and phase commands I get a linear phase.
>
> > > > Isn't it Gibberish ? How does Matlab generate linear
> > > phase
> > > > when the imaginary part of the FT is practically
> zero ?
>
> > > > I would be happy to get comments on this issue.
>
> > > > Thanks,
>
> > > > Chen
>
> > > Sorry, forgot to attach the code:
>
> > > close all;
> > > clear all;
>
> > > % Constants
> > > T =3D3D 10;
> > > w0 =3D3D 2*pi;
> > > sigma =3D3D 1;
> > > % Case 1: there are 10 cycles of the cosine function
> > > t1 =3D3D 0:0.01:10-0.01;
> > > f1 =3D3D cos(w0*t1);
> > > fw1 =3D3D fftshift(fft(f1));
>
> > > % Case 2: there are 10 cycles + 1 point
> > > t2 =3D3D 0:0.01:10;
> > > f2 =3D3D cos(w0*t2);
> > > fw2 =3D3D fftshift(fft(f2));
>
> > > figure ;
> > > subplot(3,2,1); plot(real(fw1),'.k');
> > > title('Case 1: real FT');
> > > subplot(3,2,3); plot(imag(fw1),'.k');
> > > title('Case 1: imag FT');
> > > subplot(3,2,5); plot(atan2(imag(fw1), real(fw1)),'.');
> > > title('Case 1: phase of FT');
> > > subplot(3,2,2); plot(real(fw2),'.k');
> > > title('Case 2: real FT');
> > > subplot(3,2,4); plot(imag(fw2),'.k');
> > > title('Case 2: imag FT');
> > > subplot(3,2,6); plot(atan2(imag(fw2), real(fw2)),'.');
> > > title('Case 2: phase of FT');
>
> > > Best,
>
> > > Chen- Hide quoted text -
>
> > > - Show quoted text -
>
> > It's called "leakage". =A0It's a feature of the FFT, so
> don't for a
> > moment think you've discovered something new.
> > There's a very good explanation in E Oran Brigham's book
> Fast Fourier
> > Transform published in 1973.
>
> Dear NZTideMan,
>
> I am afraid you completely missed my point.
> I am not referring to the leakage (thanks for the reference
> though), but to the linear phase that seems to be
> calculated with no reason.
>
> If you can refer to this point, i will appreciate it.
>
> Best,
>
> Chen- Hide quoted text -
>
> - Show quoted text -
OK, so it's leakage AND truncation error.
You should have realised this when you saw the plot for fw1's phase.
Did you notice it's all over the place between -pi and pi? Did you
ask yourself why?
NZTideMan <mulgor@gmail.com> wrote in message <dda8029b-
882c-463b-8424-0473115436e1@c19g2000prf.googlegroups.com>...
> On May 14, 7:20=A0pm, "Chen Sagiv"
<chensagiv...@gmail.com> wrote:
> > NZTideMan <mul...@gmail.com> wrote in message <5784b2e7-
> >
> > 6422-4da5-bbfa-
6f93523e0...@k10g2000prm.googlegroups.com>...
> >
> >
> >
> >
> >
> > > On May 14, 6:52=3DA0pm, "Chen Sagiv"
> > <chensagiv...@gmail.com> wrote:
> > > > "Chen Sagiv" <chensagiv...@gmail.com> wrote in
message
> >
> > > > <g0e20u$km...@fred.mathworks.com>...
> >
> > > > > Dear friends,
> >
> > > > > I have a strange phenomenon.
> > > > > I have a cosine wave. I take two instances of it.
> >
> > > > > I call the first Case 1, where I have 10 cycles of
> > this
> > > > > wave. Case 2 is 10 cycle + one extra point.
> >
> > > > > Now, when I calculate the FT of both signals, I
get a
> > non
> > > > > zero imaginary value for the second case.
> >
> > > > > If I try to calculate the phase, and use either
atan,
> > > > > atan2, angle and phase commands I get a linear
phase.
> >
> > > > > Isn't it Gibberish ? How does Matlab generate
linear
> > > > phase
> > > > > when the imaginary part of the FT is practically
> > zero ?
> >
> > > > > I would be happy to get comments on this issue.
> >
> > > > > Thanks,
> >
> > > > > Chen
> >
> > > > Sorry, forgot to attach the code:
> >
> > > > close all;
> > > > clear all;
> >
> > > > % Constants
> > > > T =3D3D 10;
> > > > w0 =3D3D 2*pi;
> > > > sigma =3D3D 1;
> > > > % Case 1: there are 10 cycles of the cosine function
> > > > t1 =3D3D 0:0.01:10-0.01;
> > > > f1 =3D3D cos(w0*t1);
> > > > fw1 =3D3D fftshift(fft(f1));
> >
> > > > % Case 2: there are 10 cycles + 1 point
> > > > t2 =3D3D 0:0.01:10;
> > > > f2 =3D3D cos(w0*t2);
> > > > fw2 =3D3D fftshift(fft(f2));
> >
> > > > figure ;
> > > > subplot(3,2,1); plot(real(fw1),'.k');
> > > > title('Case 1: real FT');
> > > > subplot(3,2,3); plot(imag(fw1),'.k');
> > > > title('Case 1: imag FT');
> > > > subplot(3,2,5); plot(atan2(imag(fw1), real
(fw1)),'.');
> > > > title('Case 1: phase of FT');
> > > > subplot(3,2,2); plot(real(fw2),'.k');
> > > > title('Case 2: real FT');
> > > > subplot(3,2,4); plot(imag(fw2),'.k');
> > > > title('Case 2: imag FT');
> > > > subplot(3,2,6); plot(atan2(imag(fw2), real
(fw2)),'.');
> > > > title('Case 2: phase of FT');
> >
> > > > Best,
> >
> > > > Chen- Hide quoted text -
> >
> > > > - Show quoted text -
> >
> > > It's called "leakage". =A0It's a feature of the FFT,
so
> > don't for a
> > > moment think you've discovered something new.
> > > There's a very good explanation in E Oran Brigham's
book
> > Fast Fourier
> > > Transform published in 1973.
> >
> > Dear NZTideMan,
> >
> > I am afraid you completely missed my point.
> > I am not referring to the leakage (thanks for the
reference
> > though), but to the linear phase that seems to be
> > calculated with no reason.
> >
> > If you can refer to this point, i will appreciate it.
> >
> > Best,
> >
> > Chen- Hide quoted text -
> >
> > - Show quoted text -
>
> OK, so it's leakage AND truncation error.
> You should have realised this when you saw the plot for
fw1's phase.
> Did you notice it's all over the place between -pi and
pi? Did you
> ask yourself why?
Dear NZTideMan,
Yes I did, but got no good answer.
But, as I see it it is a "reasonable" behavior for an
error. When it takes the form of an ordered pattern, as is
the case for the phase of fw2, I do not have a good
explanation yet.
Public Submission Policy
NOTICE: Any content you submit to MATLAB Central, including personal information, is not subject to the protections which may be afforded information collected under other sections of The MathWorks, Inc. Web site. You are entirely responsible for
all content that you upload, post, e-mail, transmit or otherwise make available via MATLAB Central. The MathWorks does not control the content posted by visitors to MATLAB Central and, does not guarantee the accuracy, integrity, or quality of such content.
Under no circumstances will The MathWorks be liable in any way for any content not authored by The MathWorks, or any loss or damage of any kind incurred as a result of the use of any content posted, e-mailed, transmitted or otherwise made available
via MATLAB Central. Read the complete Disclaimer prior to use.