clc
close all
clear all
M=16;
k=log2(M);
n=10000; %每次資料長度
%u=0.05;
u=0.001;
m=50;%實驗次數
%h=[0.05 -0.063 0.088];%-0.126]; -0.25];
%h=[1 0.3 -0.3 0.1 -0.1];
hr=[-0.005 0.009 -0.024 0.854 -0.218 0.049 -0.016];
hi=[-0.004 0.03 -0.104 0.52 0.273 -0.074 0.020];
h=hr+j*hi;
L=7;
snr=20;
mse_av=zeros(1,n-L+1);
isi_av=zeros(1,n-L+1);
for jj=1:m
a=randint(1,n,M);
a1=qammod(a,M);
mr1=real(a1).^4;
mr2=real(a1).^2;
mi1=imag(a1).^4;
mi2=imag(a1).^2;
rr1=mean(mr1);
rr2=mean(mr2);
ri1=mean(mi1);
ri2=mean(mi2);
Rr=rr1/rr2;
Ri=ri1/ri2;
% R2=sqrt(2);
s=filter(h,1,a1);
x=awgn(s,snr,'measured');
w=[0 0 0 1 0 0 0];
for i=1:n-L+1
y=x(i+L-1:-1:i);
z(i)=w*conj(y)';
er=(Rr-(real(z(i))^2))*real(z(i));
ei=(Ri-(imag(z(i))^2))*imag(z(i));
%u=0.0005 * (1-(1/sqrt(2*pi)*(exp(50*(-e^2/2)))));
%u=0.0005 * (1-(exp(-50*e^2)));
%u=e * (1 - exp( - 5 * e^2));
e=er+1j*ei;
x1=conv(h,w);
sum_x1=sum(abs(x1).^2);
isi(i)=(sum_x1-max(abs(x1).^2))/max(abs(x1).^2);
w=w+u*e*conj(y)/(y*y');
mse(i)=abs(e)^2;
end;
isi_av=isi_av+isi;
mse_av=mse_av+mse;
u=0.5*u+0.0028*20*log10(mse_av)
end;
isi_av=isi_av/m;
mse_av=mse_av/m;
scatterplot(a1,1,0,'g*');
title('原始無噪聲調制信號星座圖')
hold on
scatterplot(x,1,0,'g*');
title('有噪聲調制信號星座圖')
hold on
scatterplot(z(n-2200:n-200),1,0,'g*');
title('均衡后的星座圖')
hold on
figure(4)
hold on
plot([1:n-L+1],20*log10(mse_av),'g')
title('最小均方誤差')
figure(5)
hold on
plot([1:n-L+1],20*log10(isi),'g')
title('ISI')
uj5u.com熱心網友回復:
沒用過matlab不過矩陣相乘
應該是
a[n][j]×b[j][m]
也就是說a的列數要等于b的行數。因為我不懂matlab,所以不知道你的矩陣是否符合要求。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/71316.html
標籤:工具平臺和程序庫
