IQ imbalance impairment in MATLAB
This section of MATLAB source code covers IQ imbalance impairment and IQ amplitude and phase imbalance effect on constellation diagram using matlab code.
Part A and PART C of the matlab code is same as mentioned on AWGN page.
Source code-PART B
IQ_amp_imb = input('Enter IQ amplitude imbalance(default:0.03):'); % amplitude imbalance
IQ_phase_imb = input('Enter IQ phase imbalance(default:0.03):'); % phase imbalance
N = size(mapper_out_ori);
IQ_amp_imb = IQ_amp_imb.*randn(1,N); % linear value (not in %)
IQ_phase_imb = IQ_phase_imb*2.*(rand(1,N)-0.5); % in radians
mapper_out=mapper_out';
for i=1:N
alph = cos(IQ_phase_imb(i))-j*sin(IQ_phase_imb(i))*IQ_amp_imb(i);
beta = IQ_amp_imb(i)*cos(IQ_phase_imb(i))+j*sin(IQ_phase_imb(i));
out(:,i) = alph*mapper_out(:,i)+beta*conj(mapper_out(:,i));
end
figure;plot(real(out),imag(out),'b+');title('constellation with IQ imbalance');
IQ_phase_imb = input('Enter IQ phase imbalance(default:0.03):'); % phase imbalance
N = size(mapper_out_ori);
IQ_amp_imb = IQ_amp_imb.*randn(1,N); % linear value (not in %)
IQ_phase_imb = IQ_phase_imb*2.*(rand(1,N)-0.5); % in radians
mapper_out=mapper_out';
for i=1:N
alph = cos(IQ_phase_imb(i))-j*sin(IQ_phase_imb(i))*IQ_amp_imb(i);
beta = IQ_amp_imb(i)*cos(IQ_phase_imb(i))+j*sin(IQ_phase_imb(i));
out(:,i) = alph*mapper_out(:,i)+beta*conj(mapper_out(:,i));
end
figure;plot(real(out),imag(out),'b+');title('constellation with IQ imbalance');
Input and output constellation diagram
Useful Links to MATLAB codes
Refer following as well as links mentioned on left side panel for useful MATLAB codes.
OFDM Preamble generation
Time off estimation corr
Freq off estimation corr
channel estimation
11a WLAN channel
PN sequence generation
OFDMA Tx Rx
AES DES
carrier aggregation
CCDF
FIR Filter
IIR Filter
Low Pass FIR
Viterbi decoder
CRC8 CRC32
RF and Wireless tutorials
WLAN 802.11ac 802.11ad wimax Zigbee z-wave GSM LTE UMTS Bluetooth UWB IoT satellite Antenna RADAR