diff --git a/search.xml b/search.xml index f408fb48d..bedecdd76 100644 --- a/search.xml +++ b/search.xml @@ -171,6 +171,86 @@ href="">ipforbidden模块,刷入,即可 coding + + 通信原理笔记 + /2023/05/23/Communication%20principle/ + 通信原理理解性笔记

+ +

信道

+
+

将发送端数字脉冲信号转换成模拟信号的过程称为调制(Modulation);将接收端模拟信号还原成数字脉冲信号的过程称为解调(Demodulation)。将调制和解调两种功能结合在一起的设备称为调制解调器(Modem)

+

模拟信号和数字信号之间可以相互转换:模拟信号一般通过PCM脉码调制(Pulse +Code +Modulation)方法量化为数字信号,即让模拟信号的不同幅度分别对应不同的二进制值,例如采用8位编码可将模拟信号量化为2^8=256个量级,实用中常采取24位或30位编码;数字信号一般通过对载波进行移相(Phase +Shift)的方法转换为模拟信号。

+

数字信道占用信道频带较宽。一路模拟电话的频带为4kHz带宽,一路数字电话约占64kHz,这是模拟通信目前仍有生命力的主要原因。

+
+

数字信道与模拟信道_模拟信道和数字信道_偷轮子的博客-CSDN博客

+

波形成型

+
+

从上图可以看出,相关时延大于符号持续时间,因此,当两个信号在接收侧相加时,来自于时延为的符号将会和来自于时延为的符号相加。

+

不同的符号相加,或者说,不同的符号相互干扰,即为符号间干扰(ISI)

+

一般将多径信号最大时延的倒数定义为多径信道的相关带宽。

+
+

频率选择性失真ISI一体两面,其中,频率选择性失真发生在频域,对应的时域结果ISI

+
+
+

衰落(2)-- +时延扩展,相关带宽,ISI - 知乎

+
+

脉冲整形

+

一、矩形脉冲

+

实际上矩形脉冲无失真传输是不可能的,因为由傅里叶变换可知,时域矩形脉冲,频域是sinc函数,带宽无限,而信道带宽总是有限的。 +失真严重导致采样判决出错,无法正确恢复数字信号。 +显然矩形脉冲信号不合适,sinc脉冲信号合适

+

二、sinc脉冲频谱有限,一个码元达到最大幅值时其他所有码元幅值刚好为零,码元之间不会相互影响,实现了无码间串扰。

+

基带滤波器

+

一般使用基带滤波器来实现脉冲整形

+

假设发送序列{1 1 1 -1 1 -1 -1 1} +发送序列、输入滤波器的冲激信号、每个冲激信号的冲激响应,和输出信号如图所示 +例子

+
+

基带信号的发送和接收的有效理解和掌握_滚降因子为0的系统可以算是理想低通系统吗_BIT小小书童的博客-CSDN博客

+
+

最初,信号是以矩形脉冲通过带限信道,必然会出现脉冲时延扩展引起S1,频域上看是Sa函数的旁瓣千扰。

+
+

简单概述:脉冲成形 +基带成形 (脉冲成型 基带成型) - HQU小西西 - 博客园

+

有点难,待会看

+

为什么要对基带信号进行脉冲成型【转载】 +- Riden - 博客园

+
+

为什么对基带信号要成形滤波?

+

基带信号带宽无限,需要限制带宽。成形滤波器也叫限带滤波器

+

实际中通信传输的信号大都是带通信号,也就是中心频带远大于频带宽度的信号。而这些带通信号的频谱结构只取决于等效低通信号的频谱结构。这里的等效低通信号就是你这里所指的基带数字信号。而基带数字信号的频率特性又取决于两个因素,一个是基带信号中构成每个脉冲符号的基本信号的频谱,另一个就是脉冲信号之间的相关性。换句话说可以通过设计不同的基本脉冲信号的波形和符号之间的相关性,达到改变基带信号频谱结构的目的,从而改变调制后带通信号的频谱特性。 +理解了这一点,你就可以理解为什么要对基带信号进行不同的滤波生成符号脉冲了。

+
+

基带传输与成形滤波_基带成型滤波器_长弓的坚持的博客-CSDN博客

+
+

为什么要->这里有直接结论:

+

(个人简单理解,脉冲成型(形),就是将脉冲变成其他的传输波形,理由就是压缩频谱来降低ISI) +!

+
+

简单概述:脉冲成形 +基带成形 (脉冲成型 基带成型) - 1024搜-程序员专属的搜索引擎

+
+

数字信号想要在信道中传输,必须在发射机的基带部分进行脉冲成形,将数字信号转换成脉冲信号,脉冲信号到达接收机后,在基带部分进行采样判决,将数字信号恢复出来。

+

如下图所示,脉冲成形需要用到脉冲波形,实现脉冲成形要用到基带滤波器,评估基带滤波器要用到眼图。【深入浅出通信原理-学习笔记】基带信号的发送和接收_脉冲怎么发送和接受_DUANDAUNNN的博客-CSDN博客

+
+]]>
+ + 电路 + +
C && C++ (1) /2021/09/03/C_C++/ @@ -305,86 +385,6 @@ transfer,but it seem that we have really passed a,b into the function coding - - 通信原理笔记 - /2023/05/23/Communication%20principle/ - 通信原理理解性笔记

- -

信道

-
-

将发送端数字脉冲信号转换成模拟信号的过程称为调制(Modulation);将接收端模拟信号还原成数字脉冲信号的过程称为解调(Demodulation)。将调制和解调两种功能结合在一起的设备称为调制解调器(Modem)

-

模拟信号和数字信号之间可以相互转换:模拟信号一般通过PCM脉码调制(Pulse -Code -Modulation)方法量化为数字信号,即让模拟信号的不同幅度分别对应不同的二进制值,例如采用8位编码可将模拟信号量化为2^8=256个量级,实用中常采取24位或30位编码;数字信号一般通过对载波进行移相(Phase -Shift)的方法转换为模拟信号。

-

数字信道占用信道频带较宽。一路模拟电话的频带为4kHz带宽,一路数字电话约占64kHz,这是模拟通信目前仍有生命力的主要原因。

-
-

数字信道与模拟信道_模拟信道和数字信道_偷轮子的博客-CSDN博客

-

波形成型

-
-

从上图可以看出,相关时延大于符号持续时间,因此,当两个信号在接收侧相加时,来自于时延为的符号将会和来自于时延为的符号相加。

-

不同的符号相加,或者说,不同的符号相互干扰,即为符号间干扰(ISI)

-

一般将多径信号最大时延的倒数定义为多径信道的相关带宽。

-
-

频率选择性失真ISI一体两面,其中,频率选择性失真发生在频域,对应的时域结果ISI

-
-
-

衰落(2)-- -时延扩展,相关带宽,ISI - 知乎

-
-

脉冲整形

-

一、矩形脉冲

-

实际上矩形脉冲无失真传输是不可能的,因为由傅里叶变换可知,时域矩形脉冲,频域是sinc函数,带宽无限,而信道带宽总是有限的。 -失真严重导致采样判决出错,无法正确恢复数字信号。 -显然矩形脉冲信号不合适,sinc脉冲信号合适

-

二、sinc脉冲频谱有限,一个码元达到最大幅值时其他所有码元幅值刚好为零,码元之间不会相互影响,实现了无码间串扰。

-

基带滤波器

-

一般使用基带滤波器来实现脉冲整形

-

假设发送序列{1 1 1 -1 1 -1 -1 1} -发送序列、输入滤波器的冲激信号、每个冲激信号的冲激响应,和输出信号如图所示 -例子

-
-

基带信号的发送和接收的有效理解和掌握_滚降因子为0的系统可以算是理想低通系统吗_BIT小小书童的博客-CSDN博客

-
-

最初,信号是以矩形脉冲通过带限信道,必然会出现脉冲时延扩展引起S1,频域上看是Sa函数的旁瓣千扰。

-
-

简单概述:脉冲成形 -基带成形 (脉冲成型 基带成型) - HQU小西西 - 博客园

-

有点难,待会看

-

为什么要对基带信号进行脉冲成型【转载】 -- Riden - 博客园

-
-

为什么对基带信号要成形滤波?

-

基带信号带宽无限,需要限制带宽。成形滤波器也叫限带滤波器

-

实际中通信传输的信号大都是带通信号,也就是中心频带远大于频带宽度的信号。而这些带通信号的频谱结构只取决于等效低通信号的频谱结构。这里的等效低通信号就是你这里所指的基带数字信号。而基带数字信号的频率特性又取决于两个因素,一个是基带信号中构成每个脉冲符号的基本信号的频谱,另一个就是脉冲信号之间的相关性。换句话说可以通过设计不同的基本脉冲信号的波形和符号之间的相关性,达到改变基带信号频谱结构的目的,从而改变调制后带通信号的频谱特性。 -理解了这一点,你就可以理解为什么要对基带信号进行不同的滤波生成符号脉冲了。

-
-

基带传输与成形滤波_基带成型滤波器_长弓的坚持的博客-CSDN博客

-
-

为什么要->这里有直接结论:

-

(个人简单理解,脉冲成型(形),就是将脉冲变成其他的传输波形,理由就是压缩频谱来降低ISI) -!

-
-

简单概述:脉冲成形 -基带成形 (脉冲成型 基带成型) - 1024搜-程序员专属的搜索引擎

-
-

数字信号想要在信道中传输,必须在发射机的基带部分进行脉冲成形,将数字信号转换成脉冲信号,脉冲信号到达接收机后,在基带部分进行采样判决,将数字信号恢复出来。

-

如下图所示,脉冲成形需要用到脉冲波形,实现脉冲成形要用到基带滤波器,评估基带滤波器要用到眼图。【深入浅出通信原理-学习笔记】基带信号的发送和接收_脉冲怎么发送和接受_DUANDAUNNN的博客-CSDN博客

-
-]]>
- - 电路 - -
动态规划入门 /2021/08/19/DP/ @@ -1094,63 +1094,6 @@ href="https://www.piwheels.org/project/opencv-python/">opencv-python下载
apt-get install axel

下载方式

axel 参数 文件下载地址
常用可选参数:
-s 设置最大下载速度,如果限制到512KB/s,则填写512000
-n 指定连接数
-o 指定另存为目录,或者指定的目录+文件名
-H 指定header
-U 指定useragent
-q 静默模式
-a 更改默认进度条样式

eg:
axel -n 30 http://archive.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.15.2_x86_64.tar.gz
-]]> - - coding - -
- - Qt - /2021/09/20/Qt1/ - Qt问题总汇

- -

信号和槽

-

连接函数:connect

-
connect(信号发送者,发送的信号(函数的地址),信号接受者,处理的槽函数(函数的地址));
connect(Button,&QpushButton::clicked,this,&Qwidget::close);
-

松散耦合:发送端和接受端的松散耦合

-

自定义槽函数和信号

- -
class.h
public slots:
// slots function area or declaration in public
//return is void,need declaration ,and realize.
void treat();
};


class.cpp
void Studnet::treat(){
qDebug()<<"treat!";
}
-
signals:
//custom signals
//return is void,only declaration ,Needn't realize
void hungry();
-

定义槽和信号后,需要定义触发函数

-
weidget:
void classover();
void classover(){
emit zt->hungry();
}
-

要先定义connect再调用classover

-

信号的重载

-

信号函数和槽函数直接重载时,会因为二义性而导致程序无法编译,于是我们需要用函数指针来代替直接给地址,方法如下:

-
void(Teacher:: *teachersignal)(QString)=&Teacher::hungry;
void(Studnet:: *studentslot)(QString) = &Studnet::treat;

connect(zt,teachersignal::hungry,st,studentslot);
- -

Qstring 转char *

-
Qstring.toUtf8().data()  //先转utf8,再转char*
-

信号连接信号

-
connect(btn,&QPushButton::clicked,zt,teachersignal2);
-

直接将两个信号用connect相连

- -

lambda函数

-
//connect 一般使用方法
connect(信号发送者,发送的信号(函数的地址),信号接受者,处理的槽函数(函数的地址));

//lambda 使用的方式
connect(btn3,&QPushButton::clicked,this,[=](){
btn3->move(200,100);});
//可以省略this
connect(btn3,&QPushButton::clicked,[=](){
btn3->move(200,100);});
- -

模态与非模态

-

模态

-
connect(ui->actionnew,&QAction::triggered,[=](){
QDialog dlg(this);
dlg.resize(200,100);
dlg.exec(); //对话框窗口保持
qDebug()<<"modal dialog!";
-

非模态

-
[=](){QDialog dig2(this);
dig2.show(); //无法保持,一闪而过
}
QDialog *dig2 =new QDialog(this);
dig2->show(); //可以保持(堆区)
- ]]>
coding @@ -1274,6 +1217,63 @@ href="https://pypi.org/project/torch/1.8.0/#modal-close">torch-wheel下载 Code
+ + Qt + /2021/09/20/Qt1/ + Qt问题总汇

+ +

信号和槽

+

连接函数:connect

+
connect(信号发送者,发送的信号(函数的地址),信号接受者,处理的槽函数(函数的地址));
connect(Button,&QpushButton::clicked,this,&Qwidget::close);
+

松散耦合:发送端和接受端的松散耦合

+

自定义槽函数和信号

+ +
class.h
public slots:
// slots function area or declaration in public
//return is void,need declaration ,and realize.
void treat();
};


class.cpp
void Studnet::treat(){
qDebug()<<"treat!";
}
+
signals:
//custom signals
//return is void,only declaration ,Needn't realize
void hungry();
+

定义槽和信号后,需要定义触发函数

+
weidget:
void classover();
void classover(){
emit zt->hungry();
}
+

要先定义connect再调用classover

+

信号的重载

+

信号函数和槽函数直接重载时,会因为二义性而导致程序无法编译,于是我们需要用函数指针来代替直接给地址,方法如下:

+
void(Teacher:: *teachersignal)(QString)=&Teacher::hungry;
void(Studnet:: *studentslot)(QString) = &Studnet::treat;

connect(zt,teachersignal::hungry,st,studentslot);
+ +

Qstring 转char *

+
Qstring.toUtf8().data()  //先转utf8,再转char*
+

信号连接信号

+
connect(btn,&QPushButton::clicked,zt,teachersignal2);
+

直接将两个信号用connect相连

+ +

lambda函数

+
//connect 一般使用方法
connect(信号发送者,发送的信号(函数的地址),信号接受者,处理的槽函数(函数的地址));

//lambda 使用的方式
connect(btn3,&QPushButton::clicked,this,[=](){
btn3->move(200,100);});
//可以省略this
connect(btn3,&QPushButton::clicked,[=](){
btn3->move(200,100);});
+ +

模态与非模态

+

模态

+
connect(ui->actionnew,&QAction::triggered,[=](){
QDialog dlg(this);
dlg.resize(200,100);
dlg.exec(); //对话框窗口保持
qDebug()<<"modal dialog!";
+

非模态

+
[=](){QDialog dig2(this);
dig2.show(); //无法保持,一闪而过
}
QDialog *dig2 =new QDialog(this);
dig2->show(); //可以保持(堆区)
+ +]]>
+ + coding + +
学业生涯规划指导经验交流贴 /2023/10/31/Study%20exchange%20meeting/ @@ -2130,41 +2130,6 @@ class="math inline">\(O(1)\) coding - - Docker-ubuntu安装ssh - /2024/01/22/docker-ubuntu-ssh%E5%AE%89%E8%A3%85/ - 这是一篇有关Docker-ubuntu-ssh的安装教程

- -

STEP1:安装openssh-server

-

1.更新源

-
apt update
-

2.安装openssh-server

-
apt install openssh-server
-

对于Alpine-linux,则用下面命令安装

-
apk add --update openssh-server
-

还需安装openrc

-
apk add openrc
-

STEP2:设置允许root登录

-

设置/etc/ssh/sshd_config

-

追加如下指令

-

-- PermitRootLogin yes

-

NGINX-Docker无法使用apt问题

-

:star:先换源

-
cd /etc/apt
-

生成source文件

-
touch  sources.list
-

写入源

-
echo "deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free" >>sources.list
echo "deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free" >>sources.list
-

删除缓存

-
rm -fR /var/lib/apt/lists/*
-

在更新

-
apt-get update
-
while true; do
ping -c 1 -v6 -w 1 www.baidu.com > /dev/null
sleep 15
done &
-]]>
- - Code - -
ikuai-docker自建webdav /2024/01/30/docker%E8%87%AA%E5%BB%BAwebdav/ @@ -2196,6 +2161,41 @@ class="math inline">\(O(1)\)
if [ -f /root/script/ping.sh ]; then
/root/script/ping.sh
fi

更新一下

rc-update add local
+]]> + + Code + +
+ + Docker-ubuntu安装ssh + /2024/01/22/docker-ubuntu-ssh%E5%AE%89%E8%A3%85/ + 这是一篇有关Docker-ubuntu-ssh的安装教程

+ +

STEP1:安装openssh-server

+

1.更新源

+
apt update
+

2.安装openssh-server

+
apt install openssh-server
+

对于Alpine-linux,则用下面命令安装

+
apk add --update openssh-server
+

还需安装openrc

+
apk add openrc
+

STEP2:设置允许root登录

+

设置/etc/ssh/sshd_config

+

追加如下指令

+

-- PermitRootLogin yes

+

NGINX-Docker无法使用apt问题

+

:star:先换源

+
cd /etc/apt
+

生成source文件

+
touch  sources.list
+

写入源

+
echo "deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free" >>sources.list
echo "deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free" >>sources.list
+

删除缓存

+
rm -fR /var/lib/apt/lists/*
+

在更新

+
apt-get update
+
while true; do
ping -c 1 -v6 -w 1 www.baidu.com > /dev/null
sleep 15
done &
]]>
Code