【本科生通信原理】【实验报告】【北京航空航天大学】实验一:通信原理初步

一、实验目的:

  1. 熟悉 MATLAB开发环境、掌握 MATLAB基本运算操作;
  2. 熟悉和了解 MATLAB图形绘制基本指令;
  3. 熟悉使用 MATLAB分析信号频谱的过程;
  4. 掌握加性白高斯噪声信道模型

二、实验内容:

在这里插入图片描述

三、实验程序:
1、

function q1()
x = 0 : 0.0001 : 2 * pi;
y1 = 2 * exp(-0.5 * x);
y2 = cos(4 * pi * x);
figure;
plot(x, y1);
hold;
plot(x, y2);
xlabel("x", "FontName", "Times New Roman", "FontSize", 12);
ylabel("y", "FontName", "Times New Roman", "FontSize", 12);
legend("FontName","Times New Roman", "FontSize", 10, "LineWidth", 1.5);
legend("y1", "y2");
title("q1");
axis([0 2 * pi -1.1 2.1]);
grid;

2、

function q2()
x = 0 : 0.01 : 10;  % 横坐标区间
R = normrnd(0, sqrt(0.1), 1, length(x));  % 生成1 * length(x)个正态随机数figure;  % 画信号波形
plot(x, R);
grid on;
title('White Gaussian Noise');
xlabel('x');
ylabel('N');figure;  % 画序列柱状图
bar(R);
grid on;
title('Bar Graph of Noise Sequence');
xlabel('n');
ylabel('N');

3、

function q3()
N = 1024;  %采样点数
ts = 0.6 / 1023;  %系统时域采样间隔
fs = 1 / ts;  %系统采样频率
df = 0.001;  %所需的频率分辨率
t = 0 : ts: 0.6;
x = 0.4 * sin(100 * pi * t) + 0.4 * sin(640 * pi * t);
n = randn(1, N);  % 噪声信号(噪声方差为1)
y = x + n;  % 原始信号叠加噪声信号
[Y, m, df1, f] = T2F(y, ts, df, fs);figure;  % 画信号时域波形图
plot(t, y);
grid on;
title('信号时域波形图');
xlabel('t/s');
ylabel('y(t)');figure;  % 画信号频谱图
plot(f, abs(Y));
grid on;
title('信号频谱图');
xlabel('w');
ylabel('Y(w)');

4、

function q4()
% AM调制解调
echo on;
N = 1024;  % 采样点数
A = 3;  % 直流分量
fc = 125;  %载波频率
t0 = 0.6;  %信号持续时间
snr = 10;  %解调器输入信噪比dB
dt = 0.6 / 1023;  %系统时域采样间隔
fs = 1 / dt;  %系统采样频率
df = 0.001;  %所需的频率分辨率
t = 0 : dt : t0;
m = 0.1 * cos(15 * pi * t) + 1.5 * sin(25 * pi * t) + 0.5 * cos(40 * pi * t);  %调制信号
c = cos(250 * pi * t);  %载波
Lt = length(t);  %仿真过程中,信号长度
snr_lin = 10 ^ (snr / 10);  %信噪比
L = 2 * min(m);
R = 2 * max(abs(m)) + A;
[M, m, df1, f] = T2F(m, dt, df, fs);  %求出调制信号频谱
[Bw_eq] = signalband(M, df, t0);  %求出信号等效带宽
u = (A + m(1 : Lt)) .* c(1 : Lt);  % 已调信号
[U, u, df1, f] = T2F(u, dt, df, fs);
signal_power = power_x(u(1 : Lt));  %已调信号的平均功率
noise_power = (signal_power * fs) / (snr_lin * (2 * Bw_eq));  %求出噪声方差(噪声均值为0)
noise_std = sqrt(noise_power);  %噪声标准差
noise = noise_std * randn(1, Lt);  %产生噪声
sam = u(1 : Lt) + noise(1 : Lt);  %叠加了噪声的已调信号
[SAM, sam, df1, f] = T2F(sam, dt, df, fs);  %求出叠加了噪声的已调信号频谱figure;  % 画出经过信道前的已调信号时域波形
plot(t, u(1 : length(t)));
grid on;
title('经过AWGN信道前的已调信号的时域波形图');
xlabel('t');
ylabel('u(t)');figure;  %画出经过信道前的已调信号频谱图
plot(f, abs(fftshift(U)));
grid on;
title('经过AWGN信道前的已调信号的频谱图');
xlabel('w');
ylabel('U(w)');figure;  %画出经过信道后的已调信号时域波形
plot(t, sam(1 : length(t)));
axis([0 t0 -20 20]);
grid on;
title('经过AWGN信道后的已调信号的时域波形图');
xlabel('t');
ylabel('s(t)');figure;  %画出经过信道后的已调信号频谱图
plot(f, abs(fftshift(SAM)));
grid on;
title('经过AWGN信道后的已调信号的时域波形图');
xlabel('w');
ylabel('S(w)');

四、实验结果:
1、
在这里插入图片描述

2、
(1)、信号波形:
在这里插入图片描述

(2)、序列柱状图:
在这里插入图片描述

3、
(1)、所得信号的时域波形图:
在这里插入图片描述

(2)、所得信号的频谱图:
在这里插入图片描述

4、
(1)、经过AWGN信道前的已调信号的时域波形图:
在这里插入图片描述

(2)、经过AWGN信道前的已调信号的频谱:
在这里插入图片描述

(3)、经过AWGN信道后的已调信号的时域波形图:
在这里插入图片描述

(4)、经过AWGN信道后的已调信号的频谱图:
在这里插入图片描述

五、实验分析:
1、求离散时间信号傅里叶变换:

function [f, sf] = F(t, st)
%利用fft,fftshift定义函数F计算信号的傅里叶变换
%t-离散时间
%st-离散信号
dt = t(2) - t(1); %时间分辨率
T = t(end);
df = 1 / T; %频率分辨率
N = length(st); %离散傅里叶变换长度
f = -N / 2 * df : df : N / 2 * df - df;
sf = fft(st);
sf = T / N * fftshift(sf);

2、求信号平均功率:

function p = power_x(x)
%x:输入信号
%p:返回信号的x功率
p = (norm(x) .^ 2) ./ length(x);

3、求信号等效带宽:

function [Bw_eq] = signalband(sf, df, T)
%计算信号等效带宽
%sf:信号频谱
%df:频谱分辨率
%T:信号持续时间
sf_max = max(abs(sf));
Bw_eq = sum(abs(sf) .^ 2) * df / T / sf_max .^ 2;

4、序列的傅里叶变换

function [M, m, df] = fftseq(m, ts, df)fs = 1 / ts;
if nargin == 2n1 = 0;
elsen1 = fs / df;
end
n2 = length(m);
n = 2 ^ (max(nextpow2(n1), nextpow2(n2)));
M = fft(m, n);
m = [m, zeros(1, n - n2)];
df = fs / n;

5、信号从时域转换到频域

function [M, m, df1, f]=T2F(m, ts, df, fs)
%-----------------输入参数
%m: 信号
%ts: 系统时域采样间隔
%df: 所需的频率分辨率
%fs: 系统采样频率%-----------------输出参数
%M: 傅里叶变换后的频谱序列
%m: 输入信号参与过傅里叶变换后对应的序列,补零后的输入信号,长度与M,f相同
%df1: 返回的频率分辨率
%f: 与M相对应的频率序列
[M, m, df1] = fftseq(m, ts, df);
f = [0 : df1 : df1 * (length(m) - 1)] - fs / 2;  %频率向量
M = M / fs;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/601096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬取彼案壁纸

代码展现: 具体代码: import requests import re import os filename 壁纸\\ if not os.path.exists(filename): os.mkdir(filename) for i in range(2,11): url fhttp://www.netbian.com/index_{i}.htm headers {User-Agent: …

日常测试工作中哪些是必须知道的 SQL 语句?

SQL 简介 SQL(Structured Query Language,结构化查询语言)是一套用于管理关系数据库管理系统(RDBMS),基于 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言,比较重要的版本是 SQL92…

在Ubuntu22.04上离线部署Tailchat(一)

一:Tailchat介绍 Tailchat 是一款插件化易拓展的开源 IM 应用。可拓展架构赋予 Tailchat 无限可能性。前端微内核架构 后端微服务架构 使得 Tailchat 能够驾驭任何定制化/私有化的场景,是面向企业与私域用户打造,高度自由的群组管理与定制化…

大一,如何成为一名fpga工程师?

​ 1、数电(必须掌握的基础),然后进阶学模电(选学), 2、掌握HDL(HDLverilogVHDL)可以选择verilog或者VHDL,建议verilog就行。 3、掌握FPGA设计流程/原理(推…

KBDLT2.DLL文件丢失,软件或游戏无法启动,如何解决,试试这些方法,亲测有效

KBDLT2.DLL是Windows操作系统中的一个重要的动态链接库文件,它主要用于支持系统的键盘布局功能,尤其是与立陶宛语相关的键盘布局。 如果KBDLT2.DLL文件缺失或损坏,可能会导致一些问题。例如,当你试图使用立陶宛语键盘布局时&#…

Linux--vim操作

目录 前言 一、vim模式 二、底行模式的操作 三、命令模式的操作 四、替换模式 五、视图模式 六、vim的多文件编译 前言 本文主要讲解了vim的一些使用技巧。帮助我们轻松上手vim。 vim是一种多模式编辑器,通过vim打开文件并对文件进行编辑。 使用vim很简单…

MySQL四大引擎建库建表账号管理

目录 一. 数据库四大引擎 1.1 引擎查看 1.2 InnoDB引擎 1.3 MyISAM引擎 1.4 MEMORY引擎 1.5 Archive引擎 二. 数据库管理 2.1 元数据库 2.2 数据库的增删改查及使用 2.3 权限相关表 三. 数据表管理 3.1 三大范式 3.2 基本数据类型 优化原则 分类 四. 数据库账号…

Service Weaver:Google开源基于分布式应用程序开发的框架,重新定义微服务边界

大家好,我是萧楚河,公众号:golang面试经典讲解,感谢关注,一起学习一起成长。一、前言 今年6月,一群谷歌员工(由谷歌软件工程师Michael Whittaker领导)发表了一篇名为“Towards Mode…

wsl(ubuntu)创建用户

我们打卡ubuntu窗口,如果没有创建用户,那么默认是root用户 用户的增删改查 查 查询所有的用户列表 cat /etc/passwd | cut -d: -f1cat /etc/passwd: 这个命令用于显示 /etc/passwd 文件的内容。/etc/passwd 文件包含了系统上所有用户的基本信息。每一…

SpringBoot 中实现订单30分钟自动取消的策略

简介 在电商和其他涉及到在线支付的应用中,通常需要实现一个功能:如果用户在生成订单后的一定时间内未完成支付,系统将自动取消该订单。 本文将详细介绍基于Spring Boot框架实现订单30分钟内未支付自动取消的几种方案,并提供实例…

Odoo | Module | 统计系统周期使用人数/当前在线人数

文内材料 GITHUB地址 前言介绍 Odoo作为开源ERP系统的No.01,近年愈发的得到国内很多公司的关注。 虽然它的定位是中小型企业的ERP管理系统,但是在几年的Odoo开发实施过程中,有不足50人的小型企业,也有上万人的中大型企业。功能快速落地和…

ipyvizzu:一款可以绘制超级惊艳的可视化动图的 Python 工具包

今天我给大家介绍一款可视化模块,使用它可以绘制出十分惊艳的动图效果,那么当然第一步我们首先是要安装一下该模块,通过pip命令行来安装 pip install ipyvizzu牛刀小试 我们首先来简单地使用该模块来绘制一张动图,用Pandas导入数…

2024年阿里云服务器优惠活动大全,实时更新

阿里云服务器优惠活动大全包括:云服务器新人特惠、云小站、阿里云免费中心、学生主机优惠、云服务器精选特惠、阿里云领券中心等,活动上阿里云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、轻量应用服务器2核2G3M带宽轻量服务器一年61元,…

【大数据进阶第三阶段之Hive学习笔记】Hive安装

目录 1、环境准备 2、下载安装 3、配置环境变量 4、配置文件 4.1、配置hive-env.sh ​编辑4.2、配置hive-site.xml 5、上传配置jar 6、启动 1、环境准备 安装hadoop 以及 zookeeper、mysql 【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行环境搭建-CSDN博客 《z…

二刷Laravel 教程(用户模型)总结Ⅲ

一、数据库迁移 当我们运行迁移时,up 方法会被调用;(创建表) 当我们回滚迁移时,down 方法会被调用。(删除表) public function up() { //create 方法会接收两个参数:一个是数据…

C++string类的介绍及常用函数用法总结

🎉个人名片: 🐼作者简介:一名乐于分享在学习道路上收获的大二在校生🐻‍❄个人主页🎉:GOTXX 🐼个人WeChat:ILXOXVJE🐼本文由GOTXX原创,首发CSDN&a…

更改ERPNEXT源

更改ERPNEXT源 一, 更改源 针对已经安装了erpnext的,需要更改源的情况: 1, 更改为官方默认源, 进入frapp-bench的目录, 然后执行: bench remote-reset-url frappe //重设frappe的源为官方github地址。 bench remote-reset-url…

如何配置 VS Code 实现 git 密码免输入

目录 问题描述尝试过的失败方法问题分析最终采用的解决方案:利用 ssh key 提供密码免输入功能安装 git windows 命令工具在windows本地生成 ssh key将公钥安装到 git 服务器第一种方法第二种方法调试方法 参考资料: 问题描述 在 Windows 上,使用 Visual…

AI股票崩盘预测模型(企业建模_论文科研)ML model for stock crash prediction

对齐颗粒度,打通股票崩盘底层逻辑,形成一套组合拳,形成信用评级机制良性生态圈,重振股市信心!--中国股市新展望!By Toby!2024.1.3 综合介绍 股票崩盘,是指证券市场上由于某种原因&a…

玩机技巧|拿到新电脑or电脑重装系统后该如何设置

1、关闭权限申请 你是否碰到过,在打开一个应用时,电脑总会询问”你要允许此应用对你的设备进行更改吗?",这个或许很烦,下面我们就讲这个关闭,告别不断地请求。(此处你点击是,便…