1.peaks
matlab 中的 peaks 函数是一个典型的多元函数。它本质上是一个二元高斯分布的概率密度函数,函数表达式为
[X,Y,Z] = peaks(25);
mesh(X,Y,Z)
2.randn
生成一个由正态分布的随机数组成的 5×5 矩阵,符合均值为0,标准差为1
3.atan2
反正切函数(atan):
对于复数:
exp(i*x) = cos(x) + sin(x)*i
atan(sinx,cosx) = x 即相位角
与angle(cos(x) + sin(x)*i)= x 相同
范围在[-pi,pi] 符合缠绕相位
3对应于第二象限,实部为负值,虚部为正值
并且3属于[pi/2,pi]
真实相位加减2pi的正弦和余弦值是不变的,故缠绕相位可以通过加减2pi来恢复相位
故采用此函数来进行缠绕是合理的
4.对加入加性噪声的相位进行缠绕
推导:
若a1 = s + n1
则a2 = atan2(a1) = 2pin + a1 = 2pin + s + n1
(n取整数)
故仍为加性噪声
5.unwrap函数
采用的是itoh思想
Q = unwrap§ 展开向量 P 中的弧度相位角。每当连续相位角之间的跳跃大于或等于 π 弧度时,unwrap 就会通过增加 ±2π 的整数倍来平移相位角,直到跳跃小于 π。如果 P 是矩阵,unwrap 将按列运算,以第一行为首。
对每一列的起始位置进行计算,再对每一行进行运算(itoh算法),这个算法即使没有添加噪声也无法恢复原相位,所以不好。
6.mod和rem函数
当除数和被除数同号时两者一致,即取余
b = mod(a,m) 返回 a 除以 m 后的余数,其中 a 是被除数,m 是除数。此函数通常称为取模运算,表达式为 b = a - m.*floor(a./m)。mod 函数遵从 mod(a,0) 返回 a 的约定。
即符号保持与-4一致,即m
相当于3加上若干个-4后与-4符号相同,然后再取余
rem如:符号保持与3一致
rem(a,m)
取余运算,计算时,可以先不带符号,按正数对正数取余来得出答案后,根据被余数a的符号来确定符号。
delta1 = mod(filter(i,j+1)-filter(i,j)+pi,2*pi)-pi;
%若没有超过pi,则第一项加pi后为正值且小于2*pi,对2*pi取模后为0,减pi,数值不发生变化
%若>pi,则第一项加pi后为正值且大于2*pi,对2*pi取模后即为超过2*pi的部分,之后减去pi,相当于限制在[-pi,pi]之间,即原相位差-2*pi
%若<pi,则第一项加pi后为负值且大于-pi 小于0,对2*pi取模后即为加入若干个2*pi再与2*pi取模,之后减去pi,相当于限制在[-pi,pi]之间,即原相位差+2*pi
参考:刘国祥<<InSAR原理与应用>>
7.angle函数
theta = angle(z) 为复数数组 z 的每个元素返回区间 [-π,π] 中的相位角。theta 中的角度表示为 z = abs(z).exp(itheta)。
与上面的四象限反正切是对应的