SUM OF TWO SINUSOIDAL SIGNALS Experiment No: - 01 AIM: - To write a MATLAB program to find the sum of two sinusoidal signals. PROCEDURE:- Open MATLAB Open new M-file Type the program Save in current directory Compile and Run the program For the output see command window\ Figure window PROGRAM:clc; Clear all; Close all; t=0:0.001:0.1; f1=50; x1=2*pi*f1*t; y1=sin(x1); figure; subplot (3,1,1); plot (t,y1); title('sin(x1'); f2=100; x2=2*pi*f2*t; y2=sin(x2); subplot(3,1,2); plot(t,y2); title('sin(x2)'); y=y1+y2; subplot(3,1,3); plot(t,y); title('sinx1=sinx2') RESULTS:Thus the MATLAB program for sum of two sinusoidal signals was performed and the output was verified. Page No 1 OUTPUT: Page No 2 ANALOG LOW PASS FILTER Experiment No: - 02(a) AIM: - To write a MATLAB program to plot magnitude response of analog Low pass filter. PROCEDURE:- Open MATLAB Open new M-file Type the program Save in current directory Compile and Run the program For the output see command window\ Figure window PROGRAM:clc; close all; clear all; f=100:20:8000; fh=900; k=length(f); for i=1:k; m(i)=1/sqrt(1+(f(i)/fh)^2); mag(i)=20*log10(m(i)); end; figure; semilogx(f,mag); title('magnitude response of analog of low pass filter') xlabel('frequency----->'); ylabel('magnitude in db'); grid on; RESULTS:Thus the MATLAB program for analog Low pass filter was written and magnitude response was plotted. Page No 3 OUTPUT:- Page No 4 ANALOG HIGH PASS FILTER Experiment No: - 02(b) AIM: - TO write a MATLAB program to plot magnitude response of analog High pass filter.. PROCEDURE:- Open MATLAB Open new M-file Type the program Save in current directory Compile and Run the program For the output see command window\ Figure window PROGRAM:clc; close all; clear all; f=100:20:8000; fl=400; k=length(f); for i=1:k; m(i)=1/sqrt(1+(fl/f(i))^2); mag(i)=20*log10(m(i)); end; figure; semilogx(f,mag); title('magnitude response of analog of high pass filter'); xlabel('frequency----->'); ylabel('magnitude in db'); grid on; RESULTS:Thus the MATLAB program for analog high pass filter was written and magnitude response was plotted. Page No 5 OUTPUT: - Page No 6 FIR LP\HP FILTER USING KAISER WINDOWING TECHNIQUES Experiment No: - 03(a) AIM: - TO write a MATLAB program to design FIR LP\HP using Kaiser window techniques. PROCEDURE:- Open MATLAB Open new M-file Type the program Save in current directory Compile and Run the program For the output see command window\ Figure window PROGRAM:clc; close all; clear all; format long; rp=input('enter the passband ripple'); rs=input('enter the stopband ripple'); fp=input('enter the passband frequency'); fs=input('enter the stopband frequency'); f=input('enter the sampling frequency'); beta=input('enter the beta value'); wp=2*(fp/f); ws=2*(fs/f); num=-20*log10(sqrt(rp*rs))-13; dem=14.6*(fs-fp)/f; n=ceil(num/dem); n1=n+1; if(rem(n,2)~=0) n1=n; n=n-1; end; y=kaiser(n1,beta); %Lowpass filter b=fir1(n,wp,y); [h,o]=freqz(b,1,256); m=20*log10(abs(h)); subplot(2,1,1); plot(o/pi,m); ylabel('gain in db---->'); xlabel('Normalised frequency---->'); title('FIR filter using Kaiser window of LPF ----'); grid on; Page No 7 %Highpass filter b=fir1(n,wp,'high',y); [h,o]=freqz(b,1,256); m=20*log10(abs(h));subplot(2,1,2); plot(o/pi,m); ylabel('gain in db---->'); xlabel('Normalised frequency---->'); title('FIR filter using Kaiser window of HPF ----'); grid on; RESULTS:- Thus the MATLAB program for FIR LP\HP using Kaiser Window Techniques was executed. INPUT:enter the pass band ripple 0.02 enter the stop band ripple 0.01 enter the pass band frequency 1000 enter the stop band frequency 1500 enter the sampling frequency 10000 enter the beta value 5.8 OUTPUT: Page No 8 Page No 9 FIR LP\HP FILTER USING TRIANGULAR WINDOWING TECHNIQUES Experiment No: - 03(b) AIM: - TO write a MATLAB program to design FIR LP\HP using Triangular window Techniques. PROCEDURE:- Open MATLAB Open new M-file Type the program Save in current directory Compile and Run the program For the output see command window\ Figure window PROGRAM: clc; close all; clear all; format long; rp=input('enter the passband ripple'); rs=input('enter the stopband ripple'); fp=input('enter the passband frequency'); fs=input('enter the stopband frequency'); f=input('enter the sampling frequency'); wp=2*(fp/f); ws=2*(fs/f); num=-20*log10(sqrt(rp*rs))-13; dem=14.6*(fs-fp)/f; n=ceil(num/dem); n1=n+1; if(rem(n,2)~=0) n1=n; n=n-1; end; y=triang(n1); %Lowpass filter b=fir1(n,wp,y); [h,o]=freqz(b,1,256); m=20*log10(abs(h)); subplot(2,1,1); plot(o/pi,m); ylabel('gain in db---->'); xlabel('Normalised frequency---->'); title('FIR filter using Triangular window of LPF ----'); grid on; Page No 10 %Highpass filter b=fir1(n,wp,'high',y); [h,o]=freqz(b,1,256); m=20*log10(abs(h)); subplot(2,1,2); plot(o/pi,m); ylabel('gain in db---->'); xlabel('Normalised frequency---->'); title('FIR filter using Triangular window of HPF ----'); grid on ; RESULTS:Thus the MATLAB program for FIR LP\HP using triangular window Techniques was executed. INPUT:enter the passband ripple enter the stopband ripple enter the passband frequency enter the stopband frequency enter the sampling frequency 0.04 0.02 1500 2000 8000 Page No 11 OUTPUT: Page No 12 FIR LP\HP FILTER USING RECTANGULAR WINDOWING TECHNIQUES Experiment No: - 03(c) AIM: - TO write a MATLAB program to design FIR LP\HP using Rectangular window Techniques. PROCEDURE:- Open MATLAB Open new M-file Type the program Save in current directory Compile and Run the program For the output see command window\ Figure window PROGRAM: clc; close all; clear all; format long; rp=input('enter the passband ripple'); rs=input('enter the stopband ripple'); fp=input('enter the passband frequency'); fs=input('enter the stopband frequency'); f=input('enter the sampling frequency'); wp=2*(fp/f); ws=2*(fs/f); num=-20*log10(sqrt(rp*rs))-13; dem=14.6*(fs-fp)/f; n=ceil(num/dem); n1=n+1; if(rem(n,2)~=0) n1=n; n=n-1; end; y=boxcar(n1); %Lowpass filter b=fir1(n,wp,y); [h,o]=freqz(b,1,256); m=20*log10(abs(h)); subplot(2,1,1); plot(o/pi,m); ylabel('gain in db---->'); xlabel('Normalised frequency---->'); title('FIR filter using Rectangular window of LPF ----'); grid on; Page No 13 %Highpass filter b=fir1(n,wp,'high',y); [h,o]=freqz(b,1,256); m=20*log10(abs(h)); subplot(2,1,2); plot(o/pi,m); ylabel('gain in db---->'); xlabel('Normalised frequency---->'); title('FIR filter using Rectangular window of HPF ----'); title('Magnitude response of high pass filter'); grid on; RESULTS:Thus the MATLAB program for FIR LP\HP using rectangular window Techniques was executed. INPUT:enter the passband ripple 0.04 enter the stopband ripple 0.05 enter the passband frequency 1500 enter the stopband frequency 2000 enter the sampling frequency 9000 Page No 14 OUTPUT: Page No 15 LINEAR CONVOLUTION USING MATLAB Experiment No: - 04 AIM: - TO write a MATLAB program to compute linear convolution of two given Sequences. PROCEDURE:- Open MATLAB Open new M-file Type the program Save in current directory Compile and Run the program For the output see command window\ Figure window PROGRAM:clc; clear all; close; disp('enter the length of the first sequence m='); m=input(''); disp('enter the length of first sequence x[m]='); for i=1:m x(i)=input(''); end disp('enter the length of the second sequence n='); n=input(''); disp('enter the length of second sequence h[n]='); for j=1:n h(j)=input(''); end y=conv(x,h); figure; subplot(3,1,1); stem(x); ylabel ('amplitude---->'); xlabel('n---->'); title('x(n) Vs n'); subplot(3,1,2); stem(h); ylabel('amplitude---->'); xlabel('n---->'); title('h(n) Vs n'); subplot(3,1,3); stem(y); ylabel('amplitude---->'); xlabel('n---->'); title('y(n) Vs n'); disp('linear convolution of x[m] and h[n] is y'); Page No 16 INPUT:-Enter the length of the first sequence m= 6 Enter the length of first sequence x[m]= 1 2 3 4 5 6 Enter the length of the second sequence n= 6 Enter the length of second sequence h[n]= 1 2 3 4 5 6 OUTPUT:Linear convolution of x[m] and h[n] is y= 1 4 10 20 35 56 70 76 73 60 36 RESULTS :- Thus the program for linear convolution is written using MATLAB and verified. Page No 17 CIRCULAR CONVOLUTION USING MATLAB Experiment No: - 05 AIM: - TO write a MATLAB program to compute Circular convolution of two given Sequences. PROCEDURE:- Open MATLAB Open new M-file Type the program Save in current directory Compile and Run the program For the output see command window\ Figure window PROGRAM:RESULTS:Thus the program for circular convolution is written using MATLAB and verified. INPUT:enter the 1st sequence[1 2 3 4 5 6 ] enter the 2nd sequence[1 2 3 4 5] Page No 18 OUTPUT:Circular convolution of x(m) and h(n) is y= 59 62 59 50 35 50 Page No 19 BUTTERWORTH LOW PASS FILTER Experiment No: - 06(a) AIM: - TO write a MATLAB program to Amplitude response and response of Butter worth Low pass filter PROCEDURE:- Open MATLAB Open new M-file Type the program Save in current directory Compile and Run the program For the output see command window\ Figure window PROGRAM:clc; close all; clear all; format long; rp=input('enter the passband ripple'); rs=input('enter the stopband ripple'); wp=input('enter the passband frequency'); ws=input('enter the stopband frequency'); fs=input('enter the sampling frequency'); w1=2*wp/fs; w2=2*ws/fs; [n,wn]=buttord(w1,w2,rp,rs,'s'); [z,p,k]= butter(n,wn); [b,a]=butter(n,wn,'s'); w=0:0.01:pi; [h,om]=freqs(b,a,w); m=20*log10(abs(h)); an=angle(h); subplot(2,1,1); plot(om/pi,m); ylabel('gain in db--------->'); xlabel('(a) normalized freq------>'); subplot(2,1,2); plot(om/pi,an); ylabel('phase in db--------->'); xlabel('(b) normalized freq------>'); Page No 20 INPUT:enter the enter the enter the enter the enter the RESULTS:- passband stopband passband stopband sampling ripple.15 ripple60 frequency1500 frequency3000 frequency7000 Thus the Amplitude response and phase response of Butter worth Low pass filter was verified. OUTPUT:- Page No 21 BUTTERWORTH HIGH PASS FILTER Experiment No: - 06(b) AIM: - TO write a MATLAB program to Amplitude response and response of Butter worth high pass filter PROCEDURE:- Open MATLAB Open new M-file Type the program Save in current directory Compile and Run the program For the output see command window\ Figure window PROGRAM:clc; close all; clear all; format long; rp=input('enter the passband ripple'); rs=input('enter the stopband ripple'); wp=input('enter the passband frequency'); ws=input('enter the stopband frequency'); fs=input('enter the sampling frequency'); w1=2*wp/fs; w2=2*ws/fs; [n,wn]=buttord(w1,w2,rp,rs,'s'); [z,p,k]= butter(n,wn); [b,a]=butter(n,wn,'high','s'); w=0:0.01:pi; [h,om]=freqs(b,a,w); m=20*log10(abs(h)); an=angle(h); subplot(2,1,1); plot(om/pi,m); ylabel('gain in db--------->'); xlabel('(a) normalized freq------>'); subplot(2,1,2); plot(om/pi,an); ylabel('phase in db--------->'); xlabel('(b) normalized freq------>'); Page No 22 INPUT:Enter the Enter the Enter the Enter the Enter the passband stopband passband stopband sampling ripple.2 ripple40 frequency2000 frequency3500 frequency8000 RESULTS:Thus the Amplitude response and phase response of Butter worth high pass filter was verified. OUTPUT: Page No 23 LINER CONVOLUTION Experiment No: - 07 AIM: - TO write a C- program to find linear convolution of given two sequences Procedure to Work on Code Composer Studio To create the New Project Project→ New (File Name. pjt, Eg: Vectors.pjt) To create a Source file File →New→ Type the code (Save & give file name, Eg: sum.c). To Add Source files to Project Project→ Add files to Project→ sum.c To Add rts.lib file & Hello.cmd: Project→ Add files to Project→ rts6700.lib Library files: rts6700.lib (Path: c:\ti\c6000\cgtools\lib\ rts6700.lib) Note: Select Object& Library in (*.o,*.l) in Type of files Project→ Add files to Project→hello.cmd CMD file- Which is common for all non real time programs. (Path: c:\ti \ tutorial\dsk6713\hello1\hello.cmd) Note: Select Linker Command file (*.cmd) in Type of files Compile:To Compile: Project→ Compile To Rebuild: project → rebuild, Which will create the final .out executable file. (Eg.Vectors.out). Procedure to Lode and Run program: Load the Program to DSK: File→ Load program →Vectors.out To Execute project: Debug → Run Page No 24 PROGRAM:#include<stdio.h> int m=6; int n=6; int i=0,j; int x[15]={1,2,3,4,5,6,0,0,0,0,0,0}; int h[15]={1,2,3,4,5,6,0,0,0,0,0,0}; int y[20]; main() { for(i=0;i<m+n-1;i++) { y[i]=0; for(j=0;j<=i;j++) y[i]+=x[j]*h[i-j]; } for(i=0;i<m+n-1;i++) printf("%d \n",y[i]); } RESULTS:- Thus the C- Program for Linear convolution was written and the output was verified OUTPUT:4 10 20 35 56 70 76 73 60 36 Page No 25 Page No 26 Page No 27 CIRCULAR CONVOLUTION Experiment No: - 08 AIM: - TO write a C- program to find Circular convolution of given two sequences Procedure to Work on Code Composer Studio To create the New Project Project→ New (File Name. pjt, Eg: Vectors.pjt) To create a Source file File →New→ Type the code (Save & give file name, Eg: sum.c). To Add Source files to Project Project→ Add files to Project→ sum.c To Add rts.lib file & Hello.cmd: Project→ Add files to Project→ rts6700.lib Library files: rts6700.lib (Path: c:\ti\c6000\cgtools\lib\ rts6700.lib) Note: Select Object& Library in (*.o,*.l) in Type of files Project→ Add files to Project→hello.cmd CMD file- Which is common for all non real time programs. (Path: c:\ti \ tutorial\dsk6713\hello1\hello.cmd) Note: Select Linker Command file (*.cmd) in Type of files Compile:To Compile: Project→ Compile To Rebuild: project → rebuild, Which will create the final .out executable file. (Eg.Vectors.out). Procedure to Lode and Run program: Load the Program to DSK: File→ Load program →Vectors.out To Execute project: Debug → Run Page No 28 PROGRAM:#include<stdio.h> int m,n,x[30],h[30],y[30],i,j,temp[30],k,x2[30],a[30]; void main() { printf("enter the length of the 1st sequence\n"); scanf("%d",&m); printf("enter the length of the second sequence\n"); scanf("%d",&n); printf("enter the 1st sequence\n"); for(i=0;i<m;i++) scanf("%d",&x[i]); printf("enter the second sequence\n"); for(j=0;j<n;j++) scanf("%d",&h[j]); if(m-n!=0) { if(m>n) { for(i=n;i<m;i++) h[i]=0; n=m; } for(i=m;i<n;i++) x[i]=0; m=n; } y[0]=0; a[0]=h[0]; for(j=1;j<n;j++) a[j]=h[n-j]; for(i=0;i<n;i++) y[0]+=x[i]*a[i]; for(k=1;k<n;k++) { y[k]=0; for(j=1;j<n;j++) x2[j]=a[j-1]; x2[0]=a[n-1]; for(i=0;i<n;i++) { Page No 29 a[i]=x2[i]; y[k]+=x[i]*x2[i]; } } printf("the circular convolution is\n"); for(i=0;i<n;i++) printf("%d\t",y[i]); } INPUT:enter the length of the 1st sequence 5 enter the length of the second sequence 5 enter the 1st sequence 1 2 3 4 5 enter the second sequence 1 2 3 4 5 OUTPUT:the circular convolution is 45 50 50 45 35 Page No 30 Page No 31 RESULTS:- Thus the C- Program for Circular convolution was written and the output was verified Page No 32 8 – FFT Experiment No: - 09 AIM: - TO write a C- program to compute 8 – FFT of given sequences using DIF – FFT algorithm Procedure to Work on Code Composer Studio To create the New Project Project→ New (File Name. pjt, Eg: Vectors.pjt) To create a Source file File →New→ Type the code (Save & give file name, Eg: sum.c). To Add Source files to Project Project→ Add files to Project→ sum.c To Add rts.lib file & Hello.cmd: Project→ Add files to Project→ rts6700.lib Library files: rts6700.lib (Path: c:\ti\c6000\cgtools\lib\ rts6700.lib) Note: Select Object& Library in (*.o,*.l) in Type of files Project→ Add files to Project→hello.cmd CMD file- Which is common for all non real time programs. (Path: c:\ti \ tutorial\dsk6713\hello1\hello.cmd) Note: Select Linker Command file (*.cmd) in Type of files Compile:To Compile: Project→ Compile To Rebuild: project → rebuild, Which will create the final .out executable file. (Eg.Vectors.out). Procedure to Lode and Run program: Load the Program to DSK: File→ Load program →Vectors.out To Execute project: Debug → Run Page No 33 PROGRAM:#include<stdio.h> #include<math.h> #define N 8 #define PI 3.14159 typedef struct { float real,imag; } complex; main() { int i; complex w[N]; complex x[8]={0,0.0,1,0.0,2,0.0,3,0.0,4,0.0,5,0.0,6,0.0,7,0.0}; complex temp1,temp2; int j,k,upper_leg,lower_leg,leg_diff,index,step; for(i=0;i<N;i++) { w[i].real=cos((2*PI*i)/(N*2.0)); w[i].imag=-sin((2*PI*i)/(N*2.0)); } leg_diff=N/2; step=2; for(i=0;i<3;i++) { index=0; for(j=0;j<leg_diff;j++) { for(upper_leg=j;upper_leg<N;upper_leg+=(2*leg_diff)) { lower_leg=upper_leg+leg_diff; temp1.real=(x[upper_leg]).real+(x[lower_leg]).real; temp1.imag=(x[upper_leg]).imag+(x[lower_leg]).imag; temp2.real=(x[upper_leg]).real-(x[lower_leg]).real; temp2.imag=(x[upper_leg]).imag-(x[lower_leg]).imag; (x[lower_leg]).real=temp2.real*(w[index]).real-temp2.imag*(w[index]).imag; (x[lower_leg]).imag=temp2.real*(w[index]).imag+temp2.imag*(w[index]).real; (x[upper_leg]).real=temp1.real; (x[upper_leg]).imag=temp1.imag; } index+=step; } Page No 34 leg_diff=(leg_diff)/2; step=step*2; } j=0; for(i=1;i<(N-1);i++) { k=N/2; while(k<=j) { j=j-k; k=k/2; } j=j+k; if(i<j) { temp1.real=(x[j]).real; temp1.imag=(x[j]).imag; (x[j]).real=(x[i]).real; (x[j]).imag=(x[i]).imag; (x[i]).real=temp1.real; (x[i]).imag=temp1.imag; } } printf("the fft of the given input sequence is \n"); for(i=0;i<8;i++) { printf("%f %f \n",(x[i]).real,(x[i]).imag); } } OUTPUT:the fft of the given input sequence is: 28.000000 0.000000 -4.000012 9.656858 -4.000005 4.000000 -4.000010 1.656851 -4.000000 0.000000 -3.999998 -1.656858 -3.999995 -4.000000 -3.999980 -9.656851 Page No 35 FFT 1-D Experiment No: - 10 AIM: - TO write a C- program to compute FFT of the given 1- D signal and plot Algorithm:1. 2. 3. 4. 5. Select no. of points for FFT Generate a sine wave of frequency ‘f’. Take sampled data and apply FFT algorithm. Use Graph option to view the input and output. Repeat step 1to 4 for different no. of points and frequencies. PROGRAM:- #include<stdio.h> #include<math.h> #define N 32 #define PI 3.14159 typedef struct { float real,imag; } complex; float iobuffer[N]; float y[N]; main() { int i; complex w[N]; complex x[N]; complex temp1,temp2; int j,k,upper_leg,lower_leg,leg_diff,index,step; for(i=0;i<N;i++) { iobuffer[i]=sin((2*PI*2*i)/32.0); } for(i=0;i<N;i++) { Page No 36 x[i].real=iobuffer[i]; x[i].imag=0.0; } for(i=0;i<N;i++) { w[i].real=cos((2*PI*i)/(N*2.0)); w[i].imag=-sin((2*PI*i)/(N*2.0)); } leg_diff=N/2; step=2; for(i=0;i<5;i++) { index=0; for(j=0;j<leg_diff;j++) { for(upper_leg=j;upper_leg<N;upper_leg+=(2*leg_diff)) { lower_leg=upper_leg+leg_diff; temp1.real=(x[upper_leg]).real+(x[lower_leg]).real; temp1.imag=(x[upper_leg]).imag+(x[lower_leg]).imag; temp2.real=(x[upper_leg]).real-(x[lower_leg]).real; temp2.imag=(x[upper_leg]).imag-(x[lower_leg]).imag; (x[lower_leg]).real=temp2.real*(w[index]).real-temp2.imag*(w[index]).imag; (x[lower_leg]).imag=temp2.real*(w[index]).imag+temp2.imag*(w[index]).real; (x[upper_leg]).real=temp1.real; (x[upper_leg]).imag=temp1.imag; } index+=step; } leg_diff=(leg_diff)/2; step=step*2; } j=0; for(i=1;i<(N-1);i++) { k=N/2; while(k<=j) { j=j-k; k=k/2; } Page No 37 j=j+k; if(i<j) { temp1.real=(x[j]).real; temp1.imag=(x[j]).imag; (x[j]).real=(x[i]).real; (x[j]).imag=(x[i]).imag; (x[i]).real=temp1.real; (x[i]).imag=temp1.imag; } } for(i=0;i<N;i++) { y[i]=sqrt((x[i].real*x[i].real)+(x[i].imag*x[i].imag)); } for(i=0;i<N;i++) { printf("%f\t",y[i]); } return(0); } OUTPUT:- Page No 38 Page No 39 POWER DENSITY SPECTRUM Experiment No: - 11 AIM: - TO write a C- program to compute power density spectrum of given one – dimensional signal and plot. Algorithm:1 Select no. of points for FFT 2 Generate a sine wave of frequency ‘f’.(Sampling rate = No. of points of FFT) 3 Compute the Auto Correlation of sine wave. 4 Take output of auto correlation, apply FFT algorithm. 5 Use Graph option to the PDS. . 6. Repeat step 1to 4 for different no. of points and frequencies. PROGRAM:- #include<stdio.h> #include<math.h> #define N 16 #define PI 3.14159 typedef struct { float real,imag; } complex; complex x[N]; float iobuffer[N]; float x1[N],y[N]; int i; main() { complex w[N]; complex temp1,temp2; float sum=0.0; int j,k,n,upper_leg,lower_leg,leg_diff,index,step; for(i=0;i<N;i++) { Page No 40 iobuffer[i]=sin((2*PI*2*i)/15.0); } for(n=0;n<N;n++) { sum=0; for(k=0;k<N-n;k++) { sum=sum+(iobuffer[k]*iobuffer[n+k]); } x1[n]=sum; } for(i=0;i<N;i++) { x[i].real=x1[i]; x[i].imag=0.0; } for(i=0;i<N;i++) { w[i].real=cos((2*PI*i)/(N*2.0)); w[i].imag=-sin((2*PI*i)/(N*2.0)); } leg_diff=N/2; step=2; for(i=0;i<4;i++) { index=0; for(j=0;j<leg_diff;j++) { for(upper_leg=j;upper_leg<N;upper_leg+=(2*leg_diff)) { lower_leg=upper_leg+leg_diff; temp1.real=(x[upper_leg]).real+(x[lower_leg]).real; temp1.imag=(x[upper_leg]).imag+(x[lower_leg]).imag; temp2.real=(x[upper_leg]).real-(x[lower_leg]).real; temp2.imag=(x[upper_leg]).imag-(x[lower_leg]).imag; (x[lower_leg]).real=temp2.real*(w[index]).real-temp2.imag*(w[index]).imag; (x[lower_leg]).imag=temp2.real*(w[index]).imag+temp2.imag*(w[index]).real; (x[upper_leg]).real=temp1.real; (x[upper_leg]).imag=temp1.imag; } index+=step; } Page No 41 leg_diff=(leg_diff)/2; step=step*2; } j=0; for(i=1;i<(N-1);i++) { k=N/2; while(k<=j) { j=j-k; k=k/2; } j=j+k; if(i<j) { temp1.real=(x[j]).real; temp1.imag=(x[j]).imag; (x[j]).real=(x[i]).real; (x[j]).imag=(x[i]).imag; (x[i]).real=temp1.real; (x[i]).imag=temp1.imag; } } for(i=0;i<N;i++) { y[i]=sqrt((x[i].real*x[i].real)+(x[i].imag*x[i].imag)); } for(i=0;i<N;i++) { printf("%f\t",y[i]); } return(0); } OUTPUT:- Page No 42 Page No 43 Page No 44 Page No 45 Page No 46