Cramér–Rao界的推导
Cramér–Rao 界的推导
本文的推导基于以下假设:
信号到达方向对于各个阵元是一致的;信号扫过阵列的过程中只考虑相移,忽略包络的变化。
设阵元数为 ,快拍数为 ,观测数据为
其中
,表示信号矢量;
,复加性高斯白噪声,各个阵元的噪声独立,且时间上互不相关,满足分布 ;
,表示含噪声的接收数据矢量,满足分布 .
复高斯随机变量概率密度函数的推导
设复随机变量
其中 与 均为实值随机变量,若 是一个复原对称高斯随机变量,则
与 相互独立;
与 满足
的均值表示为 ;
下面推导其概率密度函数(PDF),本质上是其 实部与虚部的二维联合 PDF。
因为 与 独立,则联合密度为
其中
因此
利用
得到
则
得到了一维 圆对称复高斯分布 的概率密度函数。
对于 维独立的复高斯随机变量,其联合概率密度函数为
对数似然函数的推导
观测数据 满足分布 ,均值向量为 ,带入上式,得到单个快拍的 PDF 为
由于 个快拍在时间上相互独立,则似然函数为各快拍 PD ...
广义线性模型
广义线性模型
在回归模型中,线性回归表示为 ,逻辑回归表示为 ……为了使这形式不同的回归模型得到统一,引入了广义线性模型(GLM)
GLM 的定义
GLM 基于三项定义:
线性预测算子:
链接函数:将响应变量的期望与线性预测算子联系,定义为 ,其中
函数的输入域是分布允许的范围,例如 Bernoulli 分布的期望 ;函数的输出是线性预测器,数值范围通常是整个实数域
响应变量服从指数族分布 ,如二项分布、泊松分布、正态分布
线性预测算子
其中 .
期望估计
将回归理解为求条件分布 的过程,得到分布后,用期望作为预测值 ,用方差作为预测值的不确定性。
指数分布族
注: 起着归一化常数的作用,确保 在 上的积分为 1.
以高斯分布为例,为了简化推导,令 ,则有
则
以 Bernoulli 分布为例,将均值为 的 Bernoulli 分布记作 ,使得 ,现将 Bernoulli 分布写成
则 ,求逆函数可以得到 ,其余项
典型模型
线性回归
响应变量的分布:
链接函数:
预测:
逻 ...
理想AD的量化信噪比
理想 AD 的量化信噪比
设 AD 满量程输入范围为 ,其中 是峰值电压,ADC 每次采样输出的二进制位数为 ,有效量化等级数为 则量化步长为
量化误差假设为均匀分布在 之间,均值为零,则方差(量化噪声的功率)为
附:均匀分布 的方差为 .
满幅的正弦信号
则理想的 SNR 为
物理上, 越大,表示量化步长 越精细,量化误差(噪声)越小,SNR 越高。由于器件噪声、非线性失真等因素,真实有效位数可能小于标称的位数,可以根据实际测得的 SNR 反推出真实的有效位数 .
人工智能基础
人工智能基础
梯度下降公式的推导
目标是最小化一个可微函数 。
函数 在 附近的泰勒展开式为
函数 在 附近的泰勒展开式为
保留一阶泰勒展开,得到
其中 是要移动的方向,为了使得 ,需要满足
表示移动方向与梯度方向相反,自然选择
其中 。则参数更新规则为
以回归模型为例,用 的线性函数近似 ,
其代价函数为
偏导数计算如下
则更新规则为
这种方法需要再执行单次更新前扫描整个训练集,被称为 批量梯度下降。
线性回归
设模型的预测值为 ,观测值为 ,则噪声 。噪声服从参数为 的正态分布,即 ,其概率密度函数为
单个样本 出现的概率等价于噪声取值为 的概率,将 带入噪声的概率密度函数得到单个样本的概率密度
其中 表示给定 和参数 的条件下,观测到 的概率密度,核心是模型参数 的函数。
若有 个样本 ,各个样本之间相互独立,则所有样本同时出现的概率为
于是,最大化似然函数 等价于最小化 ,即最小二乘法的损失函数,同时也证明了在噪声满足正态分布的条件下,最小二乘与最大似 ...
延时函数HAL_Delay的1ms误差
延时函数 HAL_Delay 的 1ms 误差
1234567891011121314151617181920212223/** * @brief This function provides minimum delay (in milliseconds) based * on variable incremented. * @note In the default implementation , SysTick timer is the source of time * base. It is used to generate interrupts at regular time intervals where * uwTick is incremented. * @note This function is declared as __weak to be overwritten in case of other * implementations in user file. * @param Delay specifies the delay tim ...
CTF工具安装流程
CTF 工具安装流程
Pwn
IDA Pro
版本号:v9.1 x64,点击此处 获取安装包(访问码:3j1b)
运行安装包 ida-pro_91_x64win.exe,按提示完成安装,然后复制 keygen_patch 目录中的文件 keygen.py 和 idapro.hexlic 文件到 IDA Pro 主目录下(自定义修改 keygen.py 中的 name、email 字段),保存修改并运行 keygen.py 脚本。
运行 keygen.py 后会生成 patch 后的文件 ida.dll.patched 与 ida32.dll.patched。将原先的文件 ida.dll 和 ida32.dll 删除,然后将补丁文件 ida.dll.patched 与 ida32.dll.patched 分别重新命名为 ida.dll 和 ida32.dll。
然后运行下面脚本指定 Python 版本
12idapyswitch --force-path C:\Software\Anaconda\python3.dllidapyswitch # 再次运行,选择0即 ...
从复数到四元数
从复数到四元数
复数与二维旋转
设复数 ,则
将这个结果写成矩阵相乘的形式,
说明 矩阵 表示的几何变换与是复数乘法运算等价的。
一般地,向量 在二维平面中对应一个直角三角形,两个直角边长度为 和 ,斜边长为 ,即向量的模长,矩阵 的每个元素同时除以模长,得到
设向量 与 轴夹角为 ,则 .
与该矩阵相乘在二维平面上实现的效果是 被乘的向量绕原点逆时针旋转 .
由此可以发现,复数能够表示二维平面上的旋转,假设旋转角度为 ,定义单位复数旋转因子为
被旋转的向量 ,相乘得到被旋转 后的复数为
对应向量 在二维平面 中绕原点逆时针旋转了 .
四元数与三维旋转
本文仅使用右手坐标系。
在三维空间中,向量 绕某个旋转轴 旋转,可以将向量 分解为平行于 的分量 和垂直于 的分量 ,然后分别旋转这两个向量,再合并得到最后结果。
其中
始终与 重合,旋转 后的 ;
始终与 垂直,它的旋转可以看作二维平面内的旋转,如下图所示,
向量 绕旋转轴 , 旋转的结果
为了用“复数” ...
红米AX6000路由器刷机流程记录
红米 AX6000 路由器刷机流程记录
Redmi AX6000 参数
参数
数值
参数
数值
产品型号
RB06
天线数量
4
分类
千兆双频 AX6000
信号放大器
独立八路
电源规格
12V@2A
网络接口
千兆网口 ×4
处理器
MT7986A 四核 2.0GHz
空间流
2.4GHz 4×4 5GHz× 4×4
内存
512MB
无线速率
1148Mbps 4804Mbps
闪存
128MB
最大频宽
160MHz
无线协议
Wi-Fi 6
注:Redmi AX6000 没有 2.5G 网口,考虑之后攒钱换一个接口更多的路由器……
电源适配器:
型号
输入
输出
AD-0241200200CN-1
100-240V~50/60Hz 0.7A
12V@2A
官方固件解锁 SSH
系统版本: 1.0.67 稳定版
将路由器重置后,后台默认地址是 ...
信号的多普勒展缩建模
信号的多普勒展缩建模
在“狭义相对论”的物理学假设下,光速是恒定的,是任何物体运动速度的上限。因此,信号在发送时刻就已经确定了其传播方向与传播距离,与后续收发机的运动无关。
假设发送机从 时刻开始,每隔 时间间隔,离散地发送一次复信号。 时刻,接收机在距离发送机 的位置,并且以一定的速度 远离发送机运动。
感觉本文最初的假设,发送机在 时刻发送的信号,其传播距离仅与 有关,假设接收机在 时刻收到该信号,则 ,表示传输时延。
发送机在 时刻发送信号,此时二者的距离为 ,传输时延为 ,接收机收到信号的时刻为 ,以此类推,第 个复信号的传输时延为
接收机接收到第 个复信号的时刻为
接收机收到第 个复信号与第 个复信号的时间差为
而发送机发送第 个复信号与第 个复信号的时间差为 ,由此可以看出,经过多普勒的影响后,信号在接收端表现为 平移+展缩 的效果。
附录
平移+展缩 的 MATLAB 仿真程序:
12345678910111213141516171819202122232425262728293031323334 ...
平方根倒数计算
平方根倒数计算
12345678910111213141516float Q_rsqrt( float number ){ long i; float x2, y; const float threehalfs = 1.5F; x2 = number * 0.5F; y = number; i = * ( long * ) &y; // evil floating point bit level hacking i = 0x5f3759df - ( i >> 1 ); // what the fuck? y = * ( float * ) &i; y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration// y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed return y;}
这是在《雷神之锤 ...