📄 algorithmcmashi.m
字号:
clear% parametersPd=500; % length of signalM=2;% 产生gold码fbconnection1=[0 1 0 0 1];fbconnection2=[0 1 1 1 1]; goldseq=gold_seq(fbconnection1,fbconnection2);N=2^length(fbconnection1)-1; %码长度Lc=31;ind2=find(goldseq==0);goldseq(ind2)=-1;%gold码归一化goldseq=(1/sqrt(31))*goldseq; x1 = randint(Pd, 1, M); x2 = randint(Pd, 1, M); x3 = randint(Pd, 1, M); % psk调制 s1 = pskmod(x1, M); % s1: 目标信号 s2 = pskmod(x2, M); % s2: 干扰 s3 = pskmod(x3, M); % s3: 干扰 SIR = 0; % SIR: 信扰比 s2 = s2./(10^(SIR/20)); s3 = s3./(10^(SIR/20)); %s=[s1 s2 s3]; % 扩频序列 c1 = goldseq(1, :)'; c2 = goldseq(2, :)'; c3 = goldseq(3, :)'; %t1=goldseq(1,:)'*s(1,:); %ti=goldseq(1,:)'*s(i,:); %t1=[t1;ti]; %s=t1; % 扩频 kuo1= s1 * c1'; kuo2 = s2 * c2'; kuo3 = s3 * c3'; f1 = kuo1(1, :)'; % f1, fi as provisional variables for i = 2:Pd fi = kuo1(i, :)'; f1 = [f1; fi]; end kuo1 = f1; f1 = kuo2(1,:)'; for i = 2:Pd fi = kuo2(i,:)'; f1 = [f1; fi]; end kuo2 = f1; f1 = kuo3(1, :)'; for i = 2:Pd fi = kuo3(i,:)'; f1 = [f1; fi]; end kuo3 = f1; si = [kuo1, kuo2, kuo3]; % si: 信号矩阵 fc = 10^9; % carrier frequency wl = 3*10^8/fc; % carrier wavelength d = wl/2; % distance between neighbouring sensors is half the carrier wavelength K = 4; % number of sensors w = [0.1 0.1 0.1 0.1 ]'; % inital weight alpha = 0.9; % forgetting factor delta = 0.95; u=0.001; Q = eye(K,K); theta = [10,-30,45]; k = [0:K-1]'; A = exp(-j*2*pi*d*k*sin(theta*pi/180)/wl); %r = r1+A2*r2+A3*r3+A4*r4+A5*r5+A6*r6; SNR = 0; p = 1;for ak = 1:50 % RLS Algorithm for i = 1:500%改了次数 q = 1 + (i - 1) * N; o = i * N; temp1 = si(q:o, :); % 取一段信号temp1为31*3 r = A * temp1';%r为4*31 x = awgn(r, SNR, 'measured'); % 加信道x为4*31 %x(i) = x(i) * c1; %s2 = s2 * c2; %s3 = s3 * c3; y = x * c1;%y为4*1 c = w' * y; h = p * c; g = h / (alpha + (c' * h)); p = 1 / alpha * (p - (g * h')); t = x(:, 1); Q = 1 / delta * (Q - (Q * t * t' * Q) ./ (delta + t' * Q * t)); e = Q * y - w * c; e1= c -s1(i); ti(i) = e1' * e1; if ti>10ti(i-1) w = w + e * g'; % end % t=x(:,N); %g=e(31); %kn=P*t./(alpha+t'*P*t); % P=1/alpha*(P-P*t*t'*P./(alpha+t'*P*t)); %w=w+kn*g; %w=w+u*x*e'; %temp1=temp1'; %e1=y-temp1(1,:);%定义误差 % 计算误差的平方 single=A(:,1)*s1(i);%为4*1 %nois1=A(:,2)*s2(i);%为4*1 %nois2=A(:,3)*s3(i);%为4*1 noise=y-single; n = w'*noise*noise'*w; SINR(i)=(w'*single*single'*w)/n; end T(ak, :) = ti;endsum = zeros(1,500);for i = 1:50 sum = sum + T(i, :);endaverg = sum / 50;figure;semilogy([1:500], abs(averg), '-r');%gailecishu%legend('');xlabel('迭代次数'); ylabel('误差的平方');title(' RLS学习曲线(50次平均)');%grid on;%plot([1:N], abs(averg))figurefai = [-90:90];a = exp(-j * 2 * pi * d * k * sin(fai * pi / 180) / wl);f = w' * a;F = 10 * log10((abs(f) .^ 2));plot(fai, F)xlabel('空间角度'); ylabel('幅度(db)');title('方向图 '); figure;i=1:500;%gailecishuplot(i,10*log10(SINR));xlabel('迭代次数');ylabel('信干比SNIR(dB)');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -