毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

通信原理仿真实验系统设计与实现 第8页

更新时间:2009-6-5:  来源:毕业论文
通信原理仿真实验系统设计与实现 第8页
附  录
本论文中涉及的所有Matlab程序:
%计算散信源平均信息量message.m
function r=message(x,n)
r=0;
for i=1:n
r=r-x(i)*log(x(i))/log(2);
end
disp('此离散信息源的平均信息量为');
r            %直接在命令窗口中调用message函数,也可以在其他函数中调用

%调用例子hmessage.m
x=[0.25,0.25,0.25,0.25];
f1=rand(4,4);
hf1=hmessage(x,f1,4,4); %求平均信息量hf1=1
hx=message(x,4);  %此散信息源的平均信息量为hx=2
c1=hx-hf1;
disp('信道1的容量为')
c1
%信道1的信道容量为:c1=1
%对第二个信道
f2=rand(4,8);
hf2=hmessage(x,f2,4,8); %平均互信息量为hf2=1.5000
hx=message(x,4);  %平均信息量为hx=2
c2=hx-hf2;  %信道的容量为:c2=0.5000
disp('信道2的容量为')
abs(c2)

其中huffman.m函数如下:
%.哈夫曼编码huffman.m
function [h,l]=huffman(p);
if length(find(p<0))~=0, %判断输入是否概率分布
 error('Input is not a prob.vector,there is negative component')
end
if abs(sum(p)-1)>10e-10
 error('Input is not a prob.vector,the sum of the components is not equal to 1.')
end
n=length(p);  %将输入的概率元素个数
q=p;
for i=1:n-1
[q,l]=sort(q);  %将输入的概率元素排序
m(i,: )=[l(1:n-i+1),zeros(1,i-1)]; q=[q(1)+q(2),q(3:n),1];
end
for i=1:n-1
c(i,: )=blanks(n*n);
end
c(n-1,n)='0';   c(n-1,2*n)='1';
for i=2:n-1
 c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)==1))-(n-2):n*(find(m(n-i+1,:)==1)));
c(n-i,n)='0';   c(n-i,n+1:2*n-1)=c(n-i,1:n-1);
c(n-i,2*n)='1';
for j=1:i-1
 c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(m(n-i+1,: )==j+1)-1)+1:n*find(m(n-i+1, : )==j+1));
end;   end
for i=1:n
h(i,1:n)=c(1,n*(find(m(1,: )==i)-1)+1:find(m(1,: )==i)*n);
ll(i)=length(find(abs(h(i, : ))~=32));
end
l=sum(p.*ll);

%常规双边带调幅amodulate.m
echo on
df=0.2;  %频度分辩力
t0=0.5;              %定义t0信号的持续时间的值
tz=0.001; %定义抽样时间
fz=1/tz;
fa=50;   %定义载波频率
snr=10;  %定义信噪比,用DB表示
snr_lin=10^(snr/10); %信噪比数值
a=0.8;   %定义调拷制系数
t=[0:tz:t0];  %定义抽样点数据
%定义信号m
m=zeros(1,501);
for i=1:1:125,  m(i)= i;     end;
for i=126:1:375,  m(i)=m(125)-i+125; end;
for i=376:1:501,  m(i)=m(375)-i-375; end;
m=m/1000;;
c=cos(2*pi*fa.*t);        %载波信号
m_n=m/max(abs(m));
[M,m,df1]=fftseq(m,tz,df);  %付里叶变换,fftseq函数的程序段见后
M=M/fz;              %频率缩放,便于做图
f=[0:df1:df1*(length(m)-1)]-fz/2;  %定义频率向量
u=(1+a*m_n).*c; %将调质信号调颀在载波信号上
[U,u,df1]=fftseq(u,tz,df);  %对以调信号做付里叶变换
U=U/fz;              %h频率缩放
signal_power=ampower(u(1:length(t))); %计算信号的功率,ampower程序见后
pmn=ampower(m(1:length(t)))/(max(abs(m)))^2;  %计算调制信号的功率
eta=(a^2*pmn)/(1+a^2*pmn);  %计算调制效率
noise_power=eta*signal_power/snr_lin; %计算噪声功率
noise_std=sqrt(noise_power);  %噪声标准差
noise=noise_std*randn(1,length(u));  %产生高斯分布噪声
r=u+noise;                  %总 接收信号
[R,r,df1]=fftseq(r,tz,df);   %对总信号进行付里叶变换
R=R/fz;                 %频率缩放
%以下为结果显示
signal_power  % 显示信号功率
eta                %显示调制效率
clf
subplot(7,2,1)
plot(t,m(1:length(t)))         %做出调制信号的曲线
www.751com.cn
title('the modulated signal');
subplot(7,2,3)
plot(t,c(1:length(t)))   %做出载波的曲线
axis=([0 0.15 -2.1 2.1]);   xlabel('Time')
title('The carrier');
subplot(7,1,3)
plot(f,abs(fftshift(M)))  %作出频域的调制信号
xlabel('Frequency');     title('Spectrum of the message signal')
subplot(7,1,4)
plot(f,abs(fftshift(U)))    %作出频域的以调信号
title('Spectrum of the modulated signal');  xlabel('Frequency')
subplot(7,1,5)
plot(t,noise(1:length(t)))      %作出噪声曲线
title('noise sample');  xlabel('Time')
subplot(7,1,6)
plot(t,r(1:length(t)))  %做出总信号的时域曲线
title('signal and noise');  xlabel('title')

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

通信原理仿真实验系统设计与实现 第8页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。