Sie sind auf Seite 1von 4

11/7/2017 OQAM_IFFT.m - Free Open Source Codes - CodeForge.

com

Source Codes Point Help Upload Login Sign up | Favorite Language

Home Source Code OQAM IFFT system OQAM_IFFT.m

OQAM_IFFT.m ( File view )


From OQAM IFFT system
DescriptionIn this m.file a fbmc/oqam system is implemented using fft/ifft pair.in this system rcoine filter with roll-off factor equal to one, is used

By shole 2014-10-06 View(s)113 Download(s)1 Point(s) 1 Rate4.0

1
2 clear all;
3 tic
4
5 %------------------------------------------------------------------
6 CR=1.8; %
7
8 T=1;%
9 fs_filter=1024;%
10 N=1024;%
11 N_symbol=64;%symbol
12 MQAM=4;%4QAM
13 TR=8;%
14 Index_TR=1:TR;
15 PAPR0_dB=0:0.2:16;
16 PAPR0=10.^(PAPR0_dB/10);
17 number_X=zeros(1,length(PAPR0));
18 number_Y=zeros(1,length(PAPR0));
19 N_time=10;%
20
21 % win=blackman(32768);
22 % ffs=64;
23 % Px=zeros(N_time,32768);
24
25 % variance_r_n=zeros(1,N_time);
26 % variance_i_n=zeros(1,N_time);
27
28 for n_time=1:N_time
29 if(mod(n_time,2)==0)
30 n_time
31 end
32 %--------------------------------------------------------------
33
34 rand_bit=randint(N,N_symbol,[0,MQAM-1]);%
35 signal=qammod(rand_bit,MQAM);%QAM
36 % signal(Index_TR,:)=zeros(TR,N_symbol);
37
38 %----------------------------------------------------------------
39
40 rolloff=1;%
41 L=4*fs_filter;%
42 h_sqrt_nyquist = rcosine(1,fs_filter,'fir/sqrt',rolloff,L/(2*fs_filter));%
43
44 %-----------------------------OFDM-OQAM------------------------------
45
46 % signal_new=zeros(N,2*N_symbol);
47 % % signal_new(:,1)=[1 -1 1 -1 1 -1 1 -1];
48 % % signal_new(:,2)=[-1 1 -1 1 -1 1 -1 1];
49 % signal_real=real(signal);
50 % signal_imag=imag(signal);
51 % signal_new(:,1:2:2*N_symbol-1)=signal_real;
52 % signal_new(:,2:2:2*N_symbol)=signal_imag;
53 signal_new=zeros(N,2*N_symbol);
54 signal_new(2,4)=1;
55 signal_modulation=zeros(N,2*N_symbol);
56 for n=1:N
57 signal_modulation(n,:)=signal_new(n,:)*exp(1i*(n-1)*pi/2);
58 signal_modulation(n,2:2:2*N_symbol)=signal_modulation(n,2:2:2*N_symbol)*exp(1i*pi/2);
59 end
60 signal_ifft=zeros(2*N_symbol,N);
61 signal_filtered=zeros(2*N_symbol,length(h_sqrt_nyquist));
62 signal_carrier=zeros(2*N_symbol,length(h_sqrt_nyquist)+(2*N_symbol-1)*fs_filter/2);
63 for n=1:2*N_symbol
64 signal_ifft(n,:)=ifft(signal_modulation(:,n),N)*N;
65 signal_ifft(n,:)=circshift(signal_ifft(n,:).',-N/2*(n-1)).';
66 signal_filtered(n,1:N)=signal_ifft(n,:).*h_sqrt_nyquist(1:N);
Please
67 input your comme Submit 4.0 1 point
signal_filtered(n,N+1:2*N)=signal_ifft(n,:).*h_sqrt_nyquist(N+1:2*N); Favorite Share

http://www.codeforge.com/read/240589/OQAM_IFFT.m__html 1/4
11/7/2017 OQAM_IFFT.m - Free Open Source Codes - CodeForge.com
68 signal_filtered(n,2*N+1:3*N)=signal_ifft(n,:).*h_sqrt_nyquist(2*N+1:3*N);
69 signal_filtered(n,3*N+1:4*N)=signal_ifft(n,:).*h_sqrt_nyquist(3*N+1:4*N);
signal_filtered(n,4*N+1:(length(h_sqrt_nyquist)))=signal_ifft(n,
70 (length(h_sqrt_nyquist)-4*N)).*h_sqrt_nyquist(4*N+1:(length(h_sqrt_nyquist)));
71 signal_filtered_shift=[zeros(1,(n-1)*fs_filter/2),signal_filtered(n,:)];
72 signal_carrier(n,:)=[signal_filtered_shift,zeros(1,length(signal_carrier)-length(signal_filtered_shift))];
73 end
74 signal_transmit=sum(signal_carrier);
75
76
77
78 % [Px(n_time,:),fxx]=pwelch(signal_transmit,win,[],32768,ffs);%
79
80 % Signal_Power=abs(signal_transmit).^2;
81 % for n=3:62
82 % Max_Power=max(Signal_Power((n-1)*fs_filter+1+L/2:n*fs_filter+L/2));
83 % Mean_Power=mean(Signal_Power((n-1)*fs_filter+1+L/2:n*fs_filter+L/2));
84 % PAPR=Max_Power/Mean_Power;
85 % number_X=number_X+(PAPR0<=PAPR);
86 % end
87
88 %---------------------------------------------clipping---------------------
89
90 % signal_transmit_clipping=signal_transmit;
91 % clipping=signal_transmit(abs(signal_transmit).^2>CR*Mean_Power);
92 % clipping=sqrt(CR*Mean_Power)*clipping./abs(clipping);
93 % signal_transmit_clipping(abs(signal_transmit_clipping).^2>CR*Mean_Power)=clipping;
94 % clipping_noise=signal_transmit-signal_transmit_clipping;
95 % % l=1;
96 % % for k=1:length(clipping_noise)
97 % % if(clipping_noise(k)~=0)
98 % % clipping_noise_index1(l)=k;
99 % % l=l+1;
100 % % end
101 % % end
102 % canceling_signal=zeros(N,N_symbol);
103 % canceling_signal(Index_TR,1)=ones(TR,1);
104 % canceling_signal_new=zeros(N,2*N_symbol);
105 % canceling_signal_new(:,1:2:2*N_symbol-1)=canceling_signal;
106 % canceling_signal_modulation=zeros(N,2*N_symbol);
107 % for n=1:N
108 % canceling_signal_modulation(n,:)=canceling_signal_new(n,:)*exp(1i*(n-1)*pi/2);
109 % end
110 % canceling_signal_ifft=zeros(2*N_symbol,N);
111 % canceling_signal_filtered=zeros(2*N_symbol,length(h_sqrt_nyquist));
112 % canceling_signal_carrier=zeros(2*N_symbol,N+length(h_sqrt_nyquist)-1+(2*N_symbol-1)*fs_filter/2);
113 % for n=1:2*N_symbol
114 % canceling_signal_ifft(n,:)=ifft(canceling_signal_modulation(:,n),N)*N;
115 % A=circshift(canceling_signal_ifft(n,:).',5).';
116 % canceling_signal_filtered(n,1:N)=canceling_signal_ifft(n,:).*h_sqrt_nyquist(1:N);
117 % canceling_signal_filtered(n,N+1:2*N)=canceling_signal_ifft(n,:).*h_sqrt_nyquist(N+1:2*N);
118 % canceling_signal_filtered(n,2*N+1:3*N)=canceling_signal_ifft(n,:).*h_sqrt_nyquist(2*N+1:3*N);
119 % canceling_signal_filtered(n,3*N+1:4*N)=canceling_signal_ifft(n,:).*h_sqrt_nyquist(3*N+1:4*N);
% canceling_signal_filtered(n,4*N+1:(length(h_sqrt_nyquist)))=canceling_signal_ifft(n,
120 (length(h_sqrt_nyquist)-4*N)).*h_sqrt_nyquist(4*N+1:(length(h_sqrt_nyquist)));
121 % canceling_signal_filtered_shift=[zeros(1,(n-1)*fs_filter/2),canceling_signal_filtered(n,:)];
% canceling_signal_carrier(n,:)=[canceling_signal_filtered_shift,zeros(1,length(signal_carrier)-
122 length(canceling_signal_filtered_shift))];
123 % end
124 % canceling_signal_transmit=sum(canceling_signal_carrier);
125 % [A,B]=max(canceling_signal_transmit);
126 %
127 % signal_transmit2=signal_transmit-filtering;
128 %
129 % % [Px2(n_time,:),fxx]=pwelch(signal_transmit2,win,[],32768,ffs);%
130 %
131 % Signal_Power=abs(signal_transmit2).^2;
132 %
133 % for n=5:124
134 % Max_Power=max(Signal_Power((n-1)*fs_filter+1+L/2:n*fs_filter+L/2));
135 % Mean_Power=mean(Signal_Power((n-1)*fs_filter+1+L/2:n*fs_filter+L/2));
136 % PAPR=Max_Power/Mean_Power;
137 % number_Y=number_Y+(PAPR0<=PAPR);
138 % end
139
140 %----------------------------OFDM-OQAM-------------------------------
141 signal_received=signal_transmit;
142 h_sqrt_nyquist_shift=zeros(2*N_symbol,length(signal_received));
143 signal_received_filtered=zeros(2*N_symbol,length(signal_received));
144 signal_received_filtered1=zeros(2*N_symbol,N*(L/fs_filter+N_symbol));
Please
145 input
for your comme Submit
n=1:2*N_symbol 4.0 1 point Favorite Share

http://www.codeforge.com/read/240589/OQAM_IFFT.m__html 2/4
11/7/2017 OQAM_IFFT.m - Free Open Source Codes - CodeForge.com
146 h_sqrt_nyquist_temp=[zeros(1,(n-1)*fs_filter/2),h_sqrt_nyquist];
h_sqrt_nyquist_shift(n,:)=[h_sqrt_nyquist_temp,zeros(1,length(signal_received)-
147 length(h_sqrt_nyquist_temp))];
148 signal_received_filtered(n,:)=h_sqrt_nyquist_shift(n,:).*signal_received;
signal_received_filtered1(n,:)=[signal_received_filtered(n,:),zeros(1,length(signal_received_filtered1)-
149 length(signal_received_filtered))];
150 end
151
152 signal_received_filtered_new=zeros(2*N_symbol,N);
153 signal_received_fft=zeros(2*N_symbol,N);
154 signal_received_demodulation=zeros(2*N_symbol,N);
155 signal_received_demodulation1=zeros(2*N_symbol,N);
156 for n=1:2*N_symbol
157 for m=1:N
signal_received_filtered_new(n,m)=sum(signal_received_filtered1(n,1+(m-1):N:(N*(L/fs_filter+N_symbol-
158 1)+(m-1))));
159 end
160 signal_received_fft(n,:)=fft(signal_received_filtered_new(n,:),N);
161 end
162 for n=1:N
163 signal_received_demodulation(:,n)=signal_received_fft(:,n)*exp(-1i*(n-1)*pi/2);
164 end
165 signal_received_demodulation1(1:2:2*N_symbol-1,:)=real(signal_received_demodulation(1:2:2*N_symbol-1,:));
166 signal_received_demodulation1(2:2:2*N_symbol,:)=imag(signal_received_demodulation(2:2:2*N_symbol,:));
167
% variance_real=mean((signal_demod_real_filtered_down(:,1:N_symbol).'-real(signal).').^2);%
168
% variance_imag=mean((signal_demod_imag_filtered_down(:,1:N_symbol).'-imag(signal).').^2);%
169
170 % variance_r_n(n_time)=mean(variance_real);
171 % variance_i_n(n_time)=mean(variance_imag);
172 end
173 % variance_r=mean(variance_r_n);
174 % variance_i=mean(variance_i_n);
175 % Pxx=mean(Px);
176 % Pxx2=mean(Px2);
177
178 %----------------------------PAPR-------------------------------
179
180 % CCDF_X=number_X/N_time/60;
181 % CCDF_Y=number_Y/N_time/60;
182 % semilogy(PAPR0_dB,CCDF_X,'.-k');
183 % hold on;
184 % semilogy(PAPR0_dB,CCDF_Y,'o-b');
185 %-----------------------------------------------------------
186
187 % figure;
188 % plot(fxx,10*log10(Pxx),'b');
189 % hold on;
190 % plot(fxx,10*log10(Pxx2),'r');
191 % xlabel('frequency in Hz');
192 % ylabel('power spectrum density in dB');
toc

Want complete source code? Download it here


Point(s): 1

Download

Sponsored links

LOGIN

File list Email address Tips: You can preview the content of files by clicking file names^_^

Name Size Date


Password
OQAM_IFFT.m 7.92 kB 2012-06-06 15:53
...
Remember me Forgot password

1
Log in
Sponsored links

Please input your comme Submit 4.0 1 point Favorite Share

http://www.codeforge.com/read/240589/OQAM_IFFT.m__html 3/4
11/7/2017 OQAM_IFFT.m - Free Open Source Codes - CodeForge.com

Please input key words Search

2014 CodeForge Dev Team All rights reserved. Email:support@codeforge.com

Join us | Contact | Advertisement

Elapsed:23.471ms 5.199

OQAM_IFFT.zip

Please input your comme Submit 4.0 1 point Favorite Share

http://www.codeforge.com/read/240589/OQAM_IFFT.m__html 4/4

Das könnte Ihnen auch gefallen