%3Cp%3EI%20need%20help%20writing%20a%20program%20that%20reads%20in%20and%20plots
ID: 3554072 • Letter: #
Question
%3Cp%3EI%20need%20help%20writing%20a%20program%20that%20reads%20in%20and%20plots%20the%20values%0Aof%20a%20periodic%20discrete%20time%20sequence%20x%5Bn%5D%20using%20a%20linear%20scale%20for%0Athe%20amplitudes%20and%20to%20caluculate%20and%20plot%20the%20associated%20spectral%0Acoeffients%20ck%20using%20a%20logarithmic%20scale%20for%20the%20amplitudes.%3C%2Fp%3E%0A%3Cp%3E%3Cbr%20%2F%3E%3C%2Fp%3E%0A%3Cp%3EThe%20program%20must%20investigate%20the%20spectral%20properties%20for%20each%0Asequence%20shown%20below%3C%2Fp%3E%0A%3Cp%3E%3Cbr%20%2F%3E%3C%2Fp%3E%0A%3Cp%3En%20%20%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3BSequence%20%231%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3BSequence%20%232%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0ASequence%20%233%3C%2Fp%3E%0A%3Cp%3E0%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B3.0%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.952541172%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B1.000000000%3C%2Fp%3E%0A%3Cp%3E1%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B5.543277195%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B1.01802584%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B0.986340983%3C%2Fp%3E%0A%3Cp%3E2%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B0.0%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.685337409%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.933118328%3C%2Fp%3E%0A%3Cp%3E3%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20-9.99201E-16%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B0.289884367%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.841277465%3C%2Fp%3E%0A%3Cp%3E4%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B3%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B%200.420874559%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.714177849%3C%2Fp%3E%0A%3Cp%3E5%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20-2.296100594%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B0.635624077%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.557521136%3C%2Fp%3E%0A%3Cp%3E6%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20-4.24264%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B0.893297312%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B0.378856598%3C%2Fp%3E%0A%3Cp%3E7%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B0.0%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.593471421%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.186775626%3C%2Fp%3E%0A%3Cp%3E8%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20-3.0%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.551379417%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A-0.01000000%3C%2Fp%3E%0A%3Cp%3E9%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20-5.543277195%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B0.169733108%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A-0.203405018%3C%2Fp%3E%0A%3Cp%3E10%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20-8.88178E-16%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.788115293%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A-0.386510267%3C%2Fp%3E%0A%3Cp%3E11%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20-2.27596E-15%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.749061271%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A-0.55361933%3C%2Fp%3E%0A%3Cp%3E12%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20-3.0%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B0.641046307%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20-0.700035713%3C%2Fp%3E%0A%3Cp%3E13%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B2.296100594%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B0.469965747%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A-0.821661759%3C%2Fp%3E%0A%3Cp%3E14%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B4.242640687%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B0.362035562%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A-0.914640737%3C%2Fp%3E%0A%3Cp%3E15%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20-3.10862E-15%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.147600596%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A-0.975229578%3C%2Fp%3E%0A%3Cp%3E16%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B3.0%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.86475804%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A-1.000000000%3C%2Fp%3E%0A%3Cp%3E17%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B5.543277195%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B0.768835777%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A-0.986340983%3C%2Fp%3E%0A%3Cp%3E18%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B3.33067E-15%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B0.129407377%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A-0.933118328%3C%2Fp%3E%0A%3Cp%3E19%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20-6.66134E-16%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.314496355%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A-0.841277465%3C%2Fp%3E%0A%3Cp%3E20%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B3.0%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.170543154%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A-0.714177849%3C%2Fp%3E%0A%3Cp%3E21%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20-2.296100594%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.857306604%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A-0.557521136%3C%2Fp%3E%0A%3Cp%3E22%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20-4.242640687%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.765270783%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A-0.378856598%3C%2Fp%3E%0A%3Cp%3E23%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B2.22045E-15%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B0.473790716%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B-0.186775626%3C%2Fp%3E%0A%3Cp%3E24%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20-3.0%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%200.881798152%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%200.010000000%3C%2Fp%3E%0A%3Cp%3E25%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20-5.543277195%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A0.457732656%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A0.203405018%3C%2Fp%3E%0A%3Cp%3E26%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20-4.32987E-15%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.883379804%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.386510267%3C%2Fp%3E%0A%3Cp%3E27%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%203.33067E-15%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%200.135443871%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B0.553619330%3C%2Fp%3E%0A%3Cp%3E28%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B-3.0%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%200.816129234%0A%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%200.700035713%3C%2Fp%3E%0A%3Cp%3E29%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%202.296100594%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%200.779687639%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A0.821661759%3C%2Fp%3E%0A%3Cp%3E30%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%204.242640687%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%200.961479398%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A0.914640737%3C%2Fp%3E%0A%3Cp%3E31%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B-6.21725E-15%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A%26nbsp%3B%200.195550178%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%0A0.975229578%3C%2Fp%3E%0A
Explanation / Answer
#include "dsp1.h" /* Includes the Digital signal processing related header files */
#include "dft.h"
main()
{
extern long npt;
extern int inv;
printf("select type of transform ");
printf(" ");
printf("0 for forward DFT ");
printf("1 for inverse DFT ");
scanf("%d",&inv);
read_data();
dft();
save_data();
exit();
}
void read_data()
{
extern long npt;
int n;
extern complex x[size];
for (n=0;n< size; ++n)
{
x[n].real=0;
x[n].imag=0;
}
if ((in=fopen("coeff.dat","r"))==NULL)
{
printf("cannot open file coeff.dat ");
exit(1);
}
fscanf(in,"%ld",&npt);
for(n=1; n<=npt; n++)
{
fscanf(in,"%lf %lf",&x[n].real,&x[n].imag);
}
fclose(in);
}
void save_data()
{
long k;
int k1;
extern long npt;
extern complex x[size];
if((out=fopen("dftout.dat","w"))==NULL)
{
printf("Cannot open file dftout.dat ");
exit(1);
}
fprintf(out,"k XR(k) XI(k) ");
fprintf(out," ");
for (k=1; k<=npt; ++k)
{
k1=k-1;
fprintf(out, "%d %f %f ", k1, x[k].real, x[k].imag);
}
fclose(out);
}
void dft()
{
extern int inv;
extern long npt;
long k,n;
double WN, wk, c, s, XR[size], XI[size];
extern complex x[size];
WN=2*pi/npt;
if(inv==1)
WN=-WN;
for (k=0;k<npt;++k)
{
XR[k]=0.0;
XI[k]=0.0;
wk=k*WN;
for (n=0; n<npt;++n)
{
c=cos(n*wk);
s=sin(n*wk);
XR[k]=XR[k]+x[n+1].real*c+x[n+1].imag*s;
XI[k]=XI[k]-x[n+1].real*s+x[n+1].imag*c;
}
if (inv==1)
{ /* divide by N for IDFT */
XR[k]=XR[k]/npt;
XI[k]=XI[k]/npt;
}
}
for (k=1;k<=npt; ++k)
{
/* store transformed data in x */
x[k].real=XR[k-1];
x[k].imag=XI[k-1];
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.