⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modulator.m

📁 stbc for flat rayleigh fading channel
💻 M
字号:
function [mod_vector,const,map_gray]=modulator(rand_data,bits,M,mod_scheme)

data=[];



for tt=1:bits:size(rand_data,1)-bits+1            % input data stream divided based on M-PSK and 
    t=bin2dec(int2str(rand_data(tt:tt+bits-1,:)')); % find its equivalent decimal value
    data=[data;t];
end

if(strcmp(mod_scheme,'psk')||strcmp(mod_scheme,'Psk')||strcmp(mod_scheme,'PSK'))
    initial_phase=input('Enter initial Phase of modulated signal= ');
    [data_gray,map_gray]=bin2gray(data,'psk',M);   % map_gray contains gray mapping for M,suppose M=8, map_gray having vector of gray code for 0 to 8
    map_gray=circshift(map_gray',[1 -2]);       % since map_gray vector start from 0, while our vector start from 3 so to make to start from 3 as for general constellation
    [t,index]=ismember(data,map_gray);     % index having index of elements of data in map_gray
    index=index-1;
    theta=-2*pi*index/M + initial_phase; 
    const_theta=-2*pi*[0:M-1]/M + initial_phase;
    mod_vector=cos(theta)+j*sin(theta); 
    const=cos(const_theta)+j*sin(const_theta);
    const=const(:);
%     plot(real(const),imag(const),'o','Markersize',6);
%     grid on;axis([-1 1 -1 1]);
else
    L=sqrt(M);
    r = 2*(0:L-1) - L + 1;
    [Ii,Qi] = meshgrid(r);
    Qi=flipud(Qi);
    % Ai=sqrt(Ii.^2+Qi.^2);
    % theta=atan(Qi./Ii);
    % const=Ai.*(cos(theta)+i*sin(theta));
    const=Ii+i*Qi;
    temp_const=transpose(const);
    [index,map_gray]=bin2gray(data,'qam',M);
    mod_vector=temp_const(index+1);
%     scatterplot(modulated);
    const=reshape(temp_const,[],1);
%     scatterplot(const1);
end




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -