通信原理课上老师布置的作业
%% 通信原理作业1
%% variable
clc
clear all
A0=1;A1=1; A2=1;
dt=0.0001; T=3;
df=1/T; N=T/dt;
f=(-N/2:N/2-1)*df;
f1=1; w1=2*pi*f1;
f2=10; w2=2*pi*f2;
fc=f2; fs=1/dt;
x=0:dt:(T-dt);
y1=A1*sin(w1.*x);
y2=A2*cos(w2.*x);
%% m(t) c(t)
figure(1)
subplot(2,1,1); plot(x,y1,'linewidth',1.5); grid on
title('m(t)');
subplot(2,1,2); plot(x,y2,'linewidth',1.5); grid on
title('c(t)');
figure(2)
%% AM
yAM=(A0+y1).*y2; % AM
pAM=fft(yAM); pAM=T/N*fftshift(pAM); % fft&shift
pAM=(abs(pAM).^2)/x(end);
subplot(2,3,1); plot(x,yAM); axis([x(1),x(N),1.2*min(yAM),1.2*max(yAM)]); grid on
title('AM');
subplot(2,3,4); plot(f,pAM); axis([-1.5*f2,1.5*f2,0,max(pAM)]); grid on
title('功率谱');
%% DSB
yDSB=y1.*y2; % DSB
pDSB=fft(yDSB); pDSB=T/N*fftshift(pDSB); % fft&shift
pDSB=(abs(pDSB).^2)/x(end);
subplot(2,3,2); plot(x,yDSB); axis([x(1),x(N),1.2*min(yDSB),1.2*max(yDSB)]); grid on
title('DSB');
subplot(2,3,5); plot(f,pDSB); axis([-1.5*f2,1.5*f2,0,max(pDSB)]); grid on
title('功率谱');
%% SSB
ySSB=real(hilbert(y1).*exp(1i*2*pi*f2*x));
pSSB=fft(ySSB); pSSB=T/N*fftshift(pSSB); % fft&shift
pSSB=(abs(pSSB).^2)/x(end);
subplot(2,3,3); plot(x,ySSB); axis([x(1),x(N),1.2*min(ySSB),1.2*max(ySSB)]); grid on
title('SSB');
subplot(2,3,6); plot(f,pSSB); axis([-1.5*f2,1.5*f2,0,max(pSSB)]); grid on
title('功率谱');
demod_am=demod(yAM,fc,fs,'am');
demod_dsb=demod(yDSB,fc,fs,'amdsb-sc');
demod_ssb=demod(ySSB,fc,fs,'amssb');
%% 解调
figure(3)
subplot(3,1,1); plot(x,demod_am,x,y1,'r');grid on
title('AM相干解调')
subplot(3,1,2); plot(x,demod_dsb,x,y1,'r');grid on
title('DSB相干解调')
subplot(3,1,3); plot(x,demod_ssb,x,y1,'r');grid on
title('SSB相干解调')
%% 通信原理作业2
%% varibale
clc
clear all
close all
n=1000;n_display=10;
b=randint(1,n);
f1=1;f2=2; ffsk_neg=f2;
t=0:1/30:1-1/30;
dt=1/30;
T=n;
df=1/T; N=T/dt;
f=(-N/2:N/2-1)*df;
%% 方便根据信噪比计算误码率------将信号能量转化为单位能量
%% 2ASK
sa_pos=sin(2*pi*f1*t);
E1=sum(sa_pos.^2);
sa_pos=sa_pos/sqrt(E1); %
sa_neg=0*sin(2*pi*f1*t);
%% 2FSK
sf_neg=sin(2*pi*f1*t);
E=sum(sf_neg.^2);
sf_neg=sf_neg/sqrt(E);
sf_pos=sin(2*pi*f2*t);
E=sum(sf_pos.^2);
sf_pos=sf_pos/sqrt(E);
%% 2PSK
sp_neg=-sin(2*pi*f1*t)/sqrt(E1);
sp_pos=sin(2*pi*f1*t)/sqrt(E1);
%% 调制
ask_signal=[];psk_signal=[];fsk_signal=[];
for i=1:n
if b(i)==1
ask_signal=[ask_signal sa_pos];
psk_signal=[psk_signal sp_pos];
fsk_signal=[fsk_signal sf_pos];
else
ask_signal=[ask_signal sa_neg];
psk_signal=[psk_signal sp_neg];
fsk_signal=[fsk_signal sf_neg];
end
end
%% 10个码元序列-----用于波形显示
figure(1)
subplot(4,1,1)
stairs(0:n_display,[b(1:n_display) b(n_display)],'linewidth',1.5)
axis([0 n_display -0.5 1.5]); grid on
subplot(4,1,2)
tb=0:1/30:10-1/30;
plot(tb, ask_signal(1:10*30),'b','linewidth',1.5)
title('2ASK');grid on
subplot(4,1,3)
plot(tb, fsk_signal(1:10*30),'r','linewidth',1.5)
title('2FSK');grid on
subplot(4,1,4)
plot(tb, psk_signal(1:10*30),'k','linewidth',1.5)
title('2PSK');grid on
%% 对全部码元序列计算PSD
figure(2)
subplot(3,1,1)
pask_signal=(abs(T/N*fftshift(fft(ask_signal(1:T*30)))).^2)/T;
pfsk_signal=(abs(T/N*fftshift(fft(fsk_signal(1:T*30)))).^2)/T;
ppsk_signal=(abs(T/N*fftshift(fft(psk_signal(1:T*30)))).^2)/T;
subplot(3,1,1); plot(f,pask_signal,'linewidth',1.5);axis([-ffsk_neg*2,ffsk_neg*2,0,max(pask_signal)]);
title('2ASK 功率谱');grid on
subplot(3,1,2); plot(f,pfsk_signal,'linewidth',1.5);axis([-ffsk_neg*2,ffsk_neg*2,0,max(pfsk_signal)]);
title('2FSK 功率谱');grid on
subplot(3,1,3); plot(f,ppsk_signal);axis([-ffsk_neg*2,ffsk_neg*2,0,max(ppsk_signal)]);
title('2PSK 功率谱');grid on
%% 添加高斯白噪声计算误码率
biterror_ask=zeros(1,21);
biterror_fsk=zeros(1,21);
biterror_psk=zeros(1,21);
for snr=0:20
askn=awgn(ask_signal,snr);
pskn=awgn(psk_signal,snr);
fskn=awgn(fsk_signal,snr);
A = zeros(1,n);
F = zeros(1,n);
P = zeros(1,n);
for i=1:n
if sum(sa_pos.*askn(1+30*(i-1):30*i))>0.5 %相干解调和抽样判决,没有加带通滤波器
A(i)=1;
end
if sum(sf_pos.*fskn(1+30*(i-1):30*i))>0.5
F(i)=1;
end
if sum(sp_pos.*pskn(1+30*(i-1):30*i))>0
P(i)=1;
end
end
errA=0;errF=0; errP=0;
for i=1:n
if A(i)~=b(i)
errA=errA+1;
end
if F(i)~=b(i)
errF=errF+1;
end
if P(i)~=b(i)
errP=errP+1;
end
end
biterror_ask(snr+1)=errA/n;
biterror_fsk(snr+1)=errF/n;
biterror_psk(snr+1)=errP/n;
end
%%
figure(3)
semilogy(0:20,biterror_ask, 'b','linewidth',2)
%plot(0:20,biterror_ask, 'b','linewidth',2)
grid on;
hold on
semilogy(0:20,biterror_fsk,'r','linewidth',2)
semilogy(0:20,biterror_psk, 'k','linewidth',2)
title('biterror rate & S/N')
legend('ASK','FSK','PSK');
文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib
文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang
文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些
文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器
文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距
文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器
文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn
文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios
文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql
文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...
文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120
文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数