雷达成像基础
信号处理基础
平滑窗
锐化窗或平滑窗是一个从中心峰值点向两侧衰落的实函数,在信号处理中用来缓解有限长度信号的截断影响
由于加窗具有使孔径中心的权值高于两端权值的效应,故又称“加权”
旁瓣的降低会导致分辨率的展宽,所以需要折中考虑
在脉冲压缩中,常使用窗来控制旁瓣,同时保持尽可能高的分辨率,一般使用Kaiser窗
Kaiser窗
在时域中,长度为TTT的Kaiser窗可以表示为
wk(t,T)=I0(β1−(2t/T)2)I0(β),−T2≤t≤T2w_k(t,T) = \frac{I_0\left(\beta\sqrt{1 - (2t / T) ^ 2}\right)}{I_0(\beta)},-\frac{T}{2}\le t\le \frac{T}{2}
wk(t,T)=I0(β)I0(β1−(2t/T)2),−2T≤t≤2T
其中β\betaβ是可以调整的衰减系数或平滑系数,I0I_0I0为零阶贝塞尔函数
Kaiser窗的傅里叶变换或傅里叶逆变换为一个sinc函数
当β=0\beta = 0β=0时,Kaiser窗退化成矩形窗;当β>0\beta& ...
小波变换笔记
谨以此文,献给年少轻狂的自己
为什么需要小波变换
我们目前工程实践中所分析的信号大多是平稳信号,若忽略高斯噪声,则基本可以看作严格平稳信号的信号。但是我们难免会遇到需要进行时频分析的信号,这时候就需要采用一些时频分析方法
对于非平稳信号,传统的傅里叶变换是没有办法进行很好的分析的,需要采用特殊的方法,比如短时傅里叶变换(STFT)
短时傅里叶变换是通过添加一个固定的采样窗口来进行采样,再进行FFT,最后将结果整合为时频分析结果
下面有个例子
12345678910111213141516171819202122232425262728%% 预处理clc,clf,clear;%% 参数设置NPT = 4000; % 信号点数% 分段频率f1 = 100;f2 = 150;f3 = 200;f4 = 300;sample_rate = 1000; % 采样率t = 0:1 / sample_rate:(NPT - 1) / sample_rate;% 数据生成raw_signal = zeros(1,NPT);for i = 1:1000 raw_signal(i) = si ...
电磁场与波笔记
矢量分析
矢量代数
标量:只有大小,没有方向的量
矢量:既有大小,又有方向的量
对于矢量A\pmb{A}A,我们常用eA\pmb e_AeA表示与其同方向的单位矢量
矢量的加减运算遵循平行四边形定则,此处不做赘述
矢量的乘积运算有两种,点积和叉积
对于点积有
A⋅B=ABcosθ\pmb A \cdot \pmb B = AB\cos\theta
A⋅B=ABcosθ
对于叉积有
A×B=enABsinθ\pmb A \times \pmb B = \pmb e_nAB\sin\theta
A×B=enABsinθ
点积之后的结果是一个标量,而叉积之后的结果是一个矢量,其方向遵循右手螺旋定则
矢量的叉积运算一般使用行列式进行计算
A×B=∣exeyezAxAyAzBxByBz∣\pmb A\times\pmb B =
\left|
\begin{array}{cccc}
\pmb e_x & \pmb e_y & \pmb e_z \\
A_x & A_y & A_z\\
B_x & ...
电磁场与波的部分定理证明
电磁场与波的部分定理证明
最近在学习电磁场与波的时候,看到书上有些公式定理没给证明就直接在用,就尝试着推导了一下
关于1R的微分\frac{1}{R}的微分R1的微分
∇(1R)=−RR3\nabla(\frac{1}{R}) = -\frac{\pmb R}{R^3}
∇(R1)=−R3R
这个式子第一眼看过去好怪,一个标量求散度之后得到了一个矢量,所以想推导一下
推导过程如下所示
设位置矢量为R=r−r′,其中r=xex+yey+zez,r′=x′ex+y′ey+z′ez设位置矢量为\pmb R = \pmb r - \pmb r',其中\pmb r = xe_x + ye_y + ze_z,\pmb r' = x'e_x + y'e_y + z'e_z
设位置矢量为R=r−r′,其中r=xex+yey+zez,r′=x′ex+y′ey+z′ez
先推导∇R\pmb\nabla R∇R
∇R=∂R∂xex+∂R∂yey+∂R∂zez=x−x′(x−x′)2+(y−y′)2+(z−z′)2ex+y−y′(x−x ...
DSP学习
DSP汇编指令
在DSP编程时经常会使用到一些汇编指令
我们可以在DSP2833x_Device.h当中找到它们的定义
1234567#define EINT asm(" clrc INTM")#define DINT asm(" setc INTM")#define ERTM asm(" clrc DBGM")#define DRTM asm(" setc DBGM")#define EALLOW asm(" EALLOW")#define EDIS asm(" EDIS")#define ESTOP0 asm(" ESTOP0")
汇编指令
作用
EINT
打开中断
DINT
关闭中断
ERTM
使能调试事件
DRTM
禁止调试事件
EALLOW
解禁处于禁写状态的寄存器
EDIS
重新恢复禁止写入状态
ESTOP0
当仿真器连接时,若ESTOP0=1,则DSP运行到此处 ...
人工智能基础
无监督聚类分析
聚类指的是给定一组无标签样本,按照一定的准则将其划分为不同的样本簇,其中每个簇的样本都具有相似的属性和特征,而簇间的样本具有明显的差异
聚类≠\neq=分类,分类是有监督的,给定标签和数据类别条件下的学习,而聚类是面向无监督学习的,是人工参与度极低的一种学习方法
聚类中样本距离的计算方法
设样本x\pmb{x}x和y\pmb{y}y之间的距离d(x,y)d(x,y)d(x,y)一般满足以下四项基本性质:
非负性:d(x,y)≥0d(x,y) \ge 0d(x,y)≥0
自反性:d(x,y)=0d(x,y) = 0d(x,y)=0,当且仅当x=yx = yx=y
对称性:d(x,y)=d(y,x)d(x,y) = d(y,x)d(x,y)=d(y,x)
三角不等式:d(x,y)≤d(x,z)+d(z,y)d(x,y) \le d(x,z) + d(z,y)d(x,y)≤d(x,z)+d(z,y)
下面有一些常用的计算距离的方法
曼哈顿距离
曼哈顿距离在二维空间表示为
d(x,y)=∣x1−y1∣+∣x2−y2∣d(x,y) = |x_1 - y_1| + ...
Pytorch数据并行处理
在这个教程中,我们将学习如何用DataParallel来使用多 GPU
通过 PyTorch 使用多个 GPU 非常简单。你可以将模型放在一个 GPU:
12device = torch.device("cuda: 0")model.to(device)
然后可以复制所有的张量到GPU上:
1mytensor = my_tensor.to(device)
请注意,调用my_tensor.to(device)返回一个GPU上的my_tensor副本,而不是重写my_tensor
你需要把它赋值给一个新的张量并在GPU上使用这个张量
在多GPU上执行正向和反向传播是自然而然的事。然而,PyTorch 默认将只是用一个GPU
你可以使用DataParallel让模型并行运行来轻易的在多个GPU上运行你的操作
1mytensor = net.to(device)
这是这篇教程背后的核心,我们接下来将更详细的介绍它
导入和参数
导入 PyTorch 模块和定义参数
12345678910import torchimport torch.nn as nnfrom torch ...
torch.nn入门
PyTorch 提供设计优雅的模块和类torch.nn,torch.optim,Dataset 和 DataLoader来帮助您创建和训练神经网络
为了充分利用它们的功能并针对您的问题对其进行自定义,您需要真正地了解他们的工作
为了建立这种理解,我们将首先在 MNIST 数据集上训练基本神经网络,而无需使用这些模型的任何功能; 我们最初只会使用最基本的 PyTorch 张量功能。
然后,我们将一次从torch.nn,torch.optim,Dataset或DataLoader中逐个添加一个功能,确切地显示每个功能,以及如何使代码更简洁或更灵活
本教程假定您已经安装了 PyTorch,并且熟悉张量操作的基础知识
(如果您熟悉 Numpy 数组操作,将会发现此处使用的 PyTorch 张量操作几乎相同)
MNIST 数据设置
我们将使用经典的MNIST数据集,该数据集由手绘数字的黑白图像组成(介于 0 到 9 之间)
我们将使用pathlib 处理路径(Python 3 标准库的一部分),并下载数据集
我们只会在使用模块时才导入它们,因此您可以确切地看到正在使用模块的每个细节
1234 ...
生活已经够累了,开心一点
9e956e92eff64aa8bfafdb47fa74e12d5c21f63504d9bb5ca5b72f917da5aff890d3f8440805b62426bfda0746c32874a8187c38c744d3193b5bdbad6fd40ebeab9b2f8f76c030c8aa932df94e17d93067c173084422766cc9025718981c2480efe59b079e3d74aefa65cc86e48e196e90d4b8691dc73f5edda51fb8ae6c874e99a7bfa17257045cd5d06a9bab59a50f529a73e03d8923afa1f09ccda3b551bdf386946eab0bb5ae7d02e530503c43eafab3fd36a5424b2f022d4d2eaf545aa370f96a27510f5f113570a0f00e10d87b3e0347a9f67ff3559150fb2e2d11b6289222d43e0fe0340cbbad5a49b9c32f76bd98644e79bb83fc5 ...
Pytorch训练分类器
目前为止,我们已经看到了如何定义网络,计算损失,并更新网络的权重。所以你现在可能会想
数据应该怎么办呢?
通常来说,当必须处理图像、文本、音频或视频数据时,可以使用python标准库将数据加载到numpy数组里。然后将这个数组转化成torch.*Tensor
对于图片,有 Pillow,OpenCV 等包可以使用
对于音频,有 scipy 和 librosa 等包可以使用
对于文本,不管是原生 python 的或者是基于 Cython 的文本,可以使用 NLTK 和SpaCy
特别对于视觉方面,我们有一个包,名字叫torchvision,其中包含了针对Imagenet、CIFAR10、MNIST 等常用数据集的数据加载器 (data loaders),还有对图像数据转换的操作,即torchvision.datasets和torch.utils.data.DataLoader
这提供了极大的便利,可以避免编写样板代码。
在这个教程中,我们将使用CIFAR10数据集,它有如下的分类:“飞机”,“汽车”,“鸟”,“猫”,“鹿”,“狗”,“青蛙”,“马”,“船”,“卡车”等。在CIFA ...