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

📄 fh_ss_mul.m

📁 basic_cama 基本的CDMA仿真程序
💻 M
字号:
% function fh_ss
clc
clear,close all;
fs=200000;
T=0.005;
%  message to be transmitted
signal1=randint(1,5,2);
msg1=signal1
signal1=2*signal1-1;

signal2=randint(1,5,2);
msg2=signal2
signal2=2*signal2-1;
% selected frequencies
f=0:1/T:7/T;
f0=9000;
f1=f0+length(f)/T;
% address make
gen=[1 1 0 1];  % sv(j)=4[(a(j)+v0)mod2]+2[(a(j+1)+v1)mod2]+[(a(j+2))mod2]
address=address_make(gen);
add1=address(1,:);
add2=address(2,:);
add3=address(3,:);
add4=address(4,:);
add5=address(5,:);
%
sig1=ones(fs*T,1)*signal1;
sig1=sig1(:)';

sig2=ones(fs*T,1)*signal2;
sig2=sig2(:)';
%%  modulation
% carrier modulation
carrier1=[];
for i=1:length(signal1)
    if signal1(i)==-1
        carrier1=[carrier1 cos(2*pi*(f0+f(add1(i)+1))/fs*(0:T*fs-1))];
    else
        carrier1=[carrier1 cos(2*pi*(f1+f(add1(i)+1))/fs*(0:T*fs-1))];
    end
end
carrier2=[];
for i=1:length(signal2)
    if signal2(i)==-1
        carrier2=[carrier2 cos(2*pi*(f0+f(add2(i)+1))/fs*(0:T*fs-1))];
    else
        carrier2=[carrier2 cos(2*pi*(f1+f(add2(i)+1))/fs*(0:T*fs-1))];
    end
end

signal11=ones(T*fs,1)*signal1;
signal11=signal11(:);
signal11=signal11';
tx11=signal11.*carrier1;

signal22=ones(T*fs,1)*signal2;
signal22=signal22(:);
signal22=signal22';
tx22=signal22.*carrier2;

% figure,
% subplot(211),plotpp(tx11,fs)
% subplot(212),plot(tx11)
% figure,
% subplot(211),plotpp(tx22,fs)
% subplot(212),plot(tx22)

tx=tx11+tx22;

ff0=300; % 中频
d1_carrier0=[];
d1_carrier1=[];
for i=1:length(signal1)
    d1_carrier0=[d1_carrier0 cos(2*pi*(f0+ff0+f(add1(i)+1))/fs*(0:T*fs-1))];
    d1_carrier1=[d1_carrier1 cos(2*pi*(f1+ff0+f(add1(i)+1))/fs*(0:T*fs-1))];
end
tx1_0=tx.*d1_carrier0;
tx1_1=tx.*d1_carrier1;

d2_carrier0=[];
d2_carrier1=[];
for i=1:length(signal2)
    d2_carrier0=[d2_carrier0 cos(2*pi*(f0+ff0+f(add2(i)+1))/fs*(0:T*fs-1))];
    d2_carrier1=[d2_carrier1 cos(2*pi*(f1+ff0+f(add2(i)+1))/fs*(0:T*fs-1))];
end
tx2_0=tx.*d2_carrier0;
tx2_1=tx.*d2_carrier1;

% figure
% subplot(411),plot(tx1_0)
% subplot(412),plot(tx1_1)
% subplot(413),plotpp(tx1_0,fs)
% subplot(414),plotpp(tx1_1,fs)


b=fir1(500,2000*2/fs);
tx1_0=filter(b,1,tx1_0);
tx1_1=filter(b,1,tx1_1);
tx2_0=filter(b,1,tx2_0);
tx2_1=filter(b,1,tx2_1);

% figure
% subplot(411),plot(tx1_0)
% subplot(412),plot(tx1_1)
% subplot(413),plotpp(tx1_0,fs)
% subplot(414),plotpp(tx1_1,fs)

R=ceil(fs/2000);
fss=fs/R*2;
tx1_0=decimate(tx1_0,R/2);
tx1_1=decimate(tx1_1,R/2);
tx2_0=decimate(tx2_0,R/2);
tx2_1=decimate(tx2_1,R/2);

% figure
% subplot(411),plot(tx1_0)
% subplot(412),plot(tx1_1)
% subplot(413),plotpp(tx1_0,fs)
% subplot(414),plotpp(tx1_1,fs)

tx1_0=reshape(tx1_0,length(tx1_0)/length(msg1),length(msg1));
tx1_0=tx1_0';
tx1_1=reshape(tx1_1,length(tx1_1)/length(msg1),length(msg1));
tx1_1=tx1_1';

tx2_0=reshape(tx2_0,length(tx2_0)/length(msg2),length(msg2));
tx2_0=tx2_0';
tx2_1=reshape(tx2_1,length(tx2_1)/length(msg2),length(msg2));
tx2_1=tx2_1';

len=length(tx1_0(1,:));
u1=cos(2*pi*ff0/fss*(0:len-1));
v1=sin(2*pi*ff0/fss*(0:len-1));

u2=cos(2*pi*ff0/fss*(0:len-1));
v2=sin(2*pi*ff0/fss*(0:len-1));

for i=1:length(msg1);
    r1c1(i,1)=tx1_0(i,1)*u1(1);
    r1s1(i,1)=tx1_0(i,1)*v1(1);
    r2c1(i,1)=tx1_1(i,1)*u1(1);
    r2s1(i,1)=tx1_1(i,1)*v1(1);
end
for i=1:length(msg2);
    r1c2(i,1)=tx2_0(i,1)*u2(1);
    r1s2(i,1)=tx2_0(i,1)*v2(1);
    r2c2(i,1)=tx2_1(i,1)*u2(1);
    r2s2(i,1)=tx2_1(i,1)*v2(1);
end

for i=1:length(msg1);
    for k=2:len;
        r1c1(i,k)=r1c1(i,k-1)+tx1_0(i,k)*u1(k);
        r1s1(i,k)=r1s1(i,k-1)+tx1_0(i,k)*v1(k);
        r2c1(i,k)=r2c1(i,k-1)+tx1_1(i,k)*u1(k);
        r2s1(i,k)=r2s1(i,k-1)+tx1_1(i,k)*v1(k);
    end
end
for i=1:length(msg2);
    for k=2:len;
        r1c2(i,k)=r1c2(i,k-1)+tx2_0(i,k)*u2(k);
        r1s2(i,k)=r1s2(i,k-1)+tx2_0(i,k)*v2(k);
        r2c2(i,k)=r2c2(i,k-1)+tx2_1(i,k)*u2(k);
        r2s2(i,k)=r2s2(i,k-1)+tx2_1(i,k)*v2(k);
    end
end
%
for i=1:length(msg1);
    r11(i)=r1c1(i,len)^2+r1s1(i,len)^2;
    r12(i)=r2c1(i,len)^2+r2s1(i,len)^2;
end
for i=1:length(msg1);
    if r11(i)>=r12(i);
        msg_demod1(i)=0;
    else msg_demod1(i)=1;
    end
end

for i=1:length(msg2);
    r21(i)=r1c2(i,len)^2+r1s2(i,len)^2;
    r22(i)=r2c2(i,len)^2+r2s2(i,len)^2;
end
for i=1:length(msg2);
    if r21(i)>=r22(i);
        msg_demod2(i)=0;
    else msg_demod2(i)=1;
    end
end
msg_demod1
msg_demod2

⌨️ 快捷键说明

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