Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

%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];

}

}