function [complex_qam_data]=QAM64(bitdata)
%modulation of 64QAM,modulate bitdata to 64QAM complex signal
X1=reshape(bitdata,6,length(bitdata)/6)';
d=1;%min distance of symble
for i=1:length(bitdata)/6;
for j=1:6
X1(i,j)=X1(i,j)*(2^(6-j));
end
source(i,1)=1+sum(X1(i,:)); %convert to the number 1 to 16
end
mapping=[-7*d 7*d;-5*d 7*d;-3*d 7*d;-d 7*d;d 7*d;3*d 7*d;5*d 7*d;7*d 7*d;
-7*d 5*d;-5*d 5*d;-3*d 5*d;-d 5*d;d 5*d;3*d 5*d;5*d 5*d;7*d 5*d;
-7*d 3*d;-5*d 3*d;-3*d 3*d;-d 3*d;d 3*d;3*d 3*d;5*d 3*d;7*d 3*d;
-7*d d;-5*d d;-3*d d;-d d;d d;3*d d;5*d d;7*d d;
-7*d -d;-5*d -d;-3*d -d;-d -d;d -d;3*d -d;5*d -d;7*d -d;
-7*d -3*d;-5*d -3*d;-3*d -3*d;-d -3*d;d -3*d;3*d -3*d;5*d -3*d;7*d -3*d;
-7*d -5*d;-5*d -5*d;-3*d -5*d;-d -5*d;d -5*d;3*d -5*d;5*d -5*d;7*d -5*d;
-7*d -7*d;-5*d -7*d;-3*d -7*d;-d -7*d;d -7*d;3*d -7*d;5*d -7*d;7*d -7*d];
for i=1:length(bitdata)/6
qam_data(i,:)=mapping(source(i),:);%data mapping
end
complex_qam_data=complex(qam_data(:,1),qam_data(:,2));