DVL声学多普勒速度仪技术剖析(理论仿真篇)
声学多普勒速度仪(DVL)是一种测量相对于水底速度的声纳设备。早年DVL一开始被设计主要是用于船舶的定位导航中,但是近年来随着水下机器人领域,尤其是民用领域的兴起(据有关机构测算这一市场规模已达100亿美元),DVL的作用显得愈发重要,因为水下机器人想要在水下实现自主导航有三样东西必不可少,一个是姿态测量单元,一个是速度测量单元,一个是位置测量单元。姿态测量单元通常是通过MEMS惯导元件或者光纤惯导元件等测量得到的,而MEMS通常价格非常便宜,非常容易获得,因此它可以被大量广泛的用在水下机器人中;位置测量单元可以由GPS、USBL等设备构成,获取的难度相对容易,成本也不算太高;最后一个速度测量单元目前最有效的手段就是通过DVL来获取,但其成本高昂,售价一般在十几万以上甚至更高,因此在目前民用的水下机器人上很少有它的身影。目前水下机器人市场还没有完全爆发,主要原因就是相关的传感器不够便宜,许多关键部件的成本没有降下来,国内外在这一领域还没有出现独角兽。笔者正是意识到了这一点,所以才下定决心来研究DVL,希望有志同道合的朋友能和笔者一起将DVL的成本降下来,让水下机器人市场彻底爆发的这一天来的更早一些。
1.多普勒测速原理
1.1多普勒效应
多普勒效应是由于声源与观测者之间存在着相对运动,使观测者听到的声音频率不同于声源所发出声音频率的现象。这是由奥地利物理学家Christian Doppler 于十九世纪在声学领域首先发现的物理学原理。
典型的多普勒效应发生于声源和观测者之间。在声源静止条件下,当观测者向着声源运动时,他收到的声波频率高于他相对声源静止时收到的声波频率;当观测者远离声源而去时,他收到的声波频率低于他相对声源静止时收到的声波频率。声源于观测者之间的相对运动速度越大,则所产生的声波频率变化也就越大。有关多普勒效应的研究不仅在声学领域可以看到,利用多普勒效应进行的研究还可扩展到电磁学,光学等其它领域。
下面推导任意方向上的多普勒效应公式。如图 1 所示,S 为声源,D为观测者,为声源的运动矢量,为观测者的运动矢量,这时从声源 S 到观测者 D 传播方向的矢量 SD 随时在变。设声源在时刻t=t0 和t0+dt 的位置分别为S 和 S′ ,相位分别为和 ,其中相位的增量为。在t0时刻,由声源 S 发出的相位为 的声波传播到 D,观测者的位置在 D ;t0+dt 时刻,声源到达 S′ ,由于观测者也在运动,所以,声源 S′ 发出的相位为的声波只能到达观测者的新位置D′,观测者从D走到D′所用的时间dt′和他感受到的频率,与声源的和是不一样的。在D接收的频率,在D′接收的频率,所接收声波的相位变化了,由于相位增量是一样的,即故
(1)
相位从声源 S 传播到观测者的位置 D 的时刻为 ;而相位由声源 S′ 传播到观测者的位置 D′ 的时刻为。二者之差即为
(2)
如图 1 所示,从 、作SD的垂线,令相应的垂足分别为、。由于 与的长度相差高阶无穷小量,可认为二者大小近似相等,于是
(3)
式中,θ 是 与之间的夹角,ψ 则是与 之间的夹角。
由于声波在水体介质中的传播速度远大于声源和观测者的运动速度,可认为声源和观测者近似作匀速直线运动,因此,。由式(2)和式(2-3)解得
(4)
由此得到
(5)
这便是多普勒效应的普遍公式。
1.2多普勒测速公式
不难看出,当θ 、ψ 都等于0 时,式(5)可以过渡到共线情形
(6)
由式(6)可知,当声源与观测者相互靠近时,;当声源与观测者相互远离时,。
对于DVL而言,收发合制换能器。换能器首先作为声源,水底作为观测者,于是根据是(6)水底接收的声波频率为:
(7)
之后水底作为声源,而换能器则作为观测者,于是换能器接收的声波频率为:
(8)
整合式(7)与式(8),得到:
(9)
换能器相对静止、即当时,就是水底相对换能器的径向流速。于是,式(9)经过整理得到:
(10)
由此经过整理可以得到通用的径向测流基本公式
(11)
其中为多普勒频移。由于水中声速 c 约为1500m/s,远大于水体流速,于是一般可以忽略式(10)中的二次项,再经过整理就可以得到近似的多普勒径向测流公式:
(12)
式(2-12)中,为换能器发射的信号波长,为收发信号之间的多普勒频移。由此通过测量就可以得到换能器相对径向水底速度,并可以进一步得到水平与垂直方向的速度。
2.DVL换能器阵型与坐标变换
2.1Janus阵型结构
本节介绍多普勒测流常用的四波束Janus阵型结构。具有该换能器阵型结构的DVL可以同时发射和同时接收四个窄波束声波,再经处理就可以得到相对于声学换能器的径向流速信息。在此定义DVL的右手坐标系D 。D 的原点位于 Janus 阵型结构的等效中心O,它的三个轴、和分别指向测流系统所规定的前、右和下的方向。DVL的四波束Janus阵型结构是由四个换能器构成,各换能器收发声波的轴线与测流系统坐标系z轴之间的夹角为α,如图 2 所示。
图2.四波束Janus阵型结构
另外,各换能器收发声波的轴线在基阵坐标系 xoy 平面的投影则形成两条相互垂直的直线,且波束 1 的投影与x 轴之间的夹角为 β,如图3 所示。通常测流系统成“X”字形式安装时的 β 等于 45°,成“十”字形式安装时的 β 等于 0°。配有四波束 Janus 阵型结构的DVL在工作时,换能器同时发射的窄波束声波,沿着各自换能器的轴线方向传播。在传播的过程中,每路声波被该路水体散射,会有散射回波被各换能器接收。DVL换能器和水体之间的径向运动使得收发声波频率之间存在多普勒频移。通过测量多普勒频移就可利用式(12)解算出径向流速,,和。
图3.四波束Janus阵型结构
2.2基阵坐标系下的速度
设水底在D下的速度矢量为。同时假设DVL所测水底是均匀水平的。配有四波束 Janus 阵型结构的DVL利用任意三个声波所测流速就可以转换为D下的流速矢量。即使因为某一波束受到干扰不能正常测量时系统也可以工作,因此提高了测量的可靠性。以第 1、2 和 3 波束测得的流速列矢量 为例,得到与的关系为:
(13)
(14)
其中
(15)
(16)
实际上,所测水底很少是完全均匀的,即DVL在同一深度上所测相对水底的速度大小与方向往往不同。水底的不均匀性会引入不同程度的速度固有误差。四波束 Janus 阵型结构较三波束 Convex 阵型结构可以多获得第 4 波束的冗余信息,因此可以验证水底的均匀性情况。为了量化水底不均匀性造成的影响,可以引入流速固有误差公式,这是评估数据质量是否有效的重要因素。具体为:
(17)
通过分析可知,只要所测水底均匀,则无论系统怎样摇摆都基本趋近于零,且四路回波认为是有效数据;如果所测流场不均匀,也要看来确定不均匀的程度,用于判断四路回波数据的有效性。
四波束 Janus 阵型结构较三波束 Convex 阵型结构还有一个优势,就是可以更有效地减小由DVL基阵摇摆引入的流速测量误差,这是通过四个波束所测流速转化为D 下的流速矢量来实现的。设水底的四个径向速度构成的列矢量为,由于水底在D下的流速列矢量为,于是得到与之间的关系为:
(18)
(19)
式(18)和式(19)中的转换矩阵分别为:
(20)
(21)
由式(14)和式(19)的关系,最后就可以将测得的径向速度转换为测速系统坐标系D下的速度。
2.3大地坐标系下的速度
相对于声学换能器的径向流速和基阵坐标系下的流速往往并不是用户想要得到的最终流速信息。在实际应用过程中,大地坐标系下的流速信息往往具有更好的实用价值,因此需要将所测换能器径向流速转换成基阵坐标系下的流速后,再进一步转换为大地坐标系下的流速,而这就涉及到了两个坐标系下的流速坐标转换问题。
图4. 坐标转换
在此定义大地的右手坐标系G。大地坐标系G的原点位于测速系统的等效中心O,它的三个轴、和分别指向北、东和垂直向下。接下来,要将基阵坐标系D下的速度转换为大地坐标系G下的速度。如图4 所示设某一右手直角坐标系xyz就是基阵坐标系D,首先绕oz轴顺时针旋转一个角度ψ,则相应的方向余弦矩阵为:
(22)
接下来绕oy轴顺时针旋转一个角度θ,则相应的方向余弦矩阵为:
(23)
最后绕ox 轴顺时针旋转一个角度,则相应的方向余弦矩阵为:
(24)
此时ψ、θ与为三个欧拉角,他们分别称为航向角、纵摇角和横摇角,这是通过DVL内嵌的姿态传感器提供的。
设经过以上三次旋转后的新右手直角坐标系为大地坐标系G,则到的坐标转换矩阵为:
(25)
设速度矢量在D内坐标为,在G内坐标为,则有如下关系成立:
(26)
(27)
由式(26)的关系,就可以将基阵坐标系D下的流速转换为大地坐标系G下的流速。最后由式(18)、(19)与式(26)、(27),得到与的通用关系:
(28)
(29)
由式(28)与式(29),就可以将波束所测径向速度直接转换为大地坐标系下的速度。
3.DVL的信号处理
3.1频率估计算法简述
如何从多普勒测速回波中提取流速信息是一个重要的问题。该问题涉及到一定空间范围内平均多普勒频移的测量。目前,常用的解决方法是将该问题简化为单频复正弦信号加上高斯白噪声的频率估计问题。
基于此观点,有很多可以利用的算法来估计频率。其中大部分是基于最大似然(ML)的方法。实际的 ML 估计器需要定位周期图频谱谱峰的位置,其中,Palmer 利用了 FFT 来估计谱峰位置,但性能并不理想。Rife 和 Boorstyn给出了最大似然估计器的公式,此时的该估计是无偏的且在信噪比(SNR)达到门限值以上时该估计的均方误差可以达到克拉美-罗下限(CLRB)。需要注意,以上基于频域的估计算法计算时较为复杂,目前并不适合DVL快速灵活的测量要求。
减小频域估计器计算量常用的方法是基于时域相位的估计思想。通过将加性高斯噪声近似为高斯相位噪声,Tretter给出了一种时域估计器。该近似在高 SNR 条件下是有效的,且作为一种最小二乘估计器其性能等价于 ML的性能。由于需要解决相位模糊问题,该估计器在低 SNR 时性能很难满足。Kay给出了一个延迟采样间隔的相位差分估计器,该估计器在高 SNR 条件下可以达到 CRLB。由于改变了提取相位与求和运算的顺序,该估计器可以被认为是由原来的一种相位平均估计器(PA)转变为一种线性预测估计器(LP)。以 Kay 的工作为基础,不同延迟和不同权重的时域频率估计器相继出现。这些估计器在性能上比 Kay 的估计器有所提高,但这是以限制频率估计范围或增加计算量为前提的。Brown 和 Wang,肖扬灿分别给出了各自的循环频率估计器。但这些循环形式的频率估计器性能的提高也是以进一步增加计算复杂性为代价的。
还有其它频率估计的典型算法,包括过零检测法,自适应法等。过零检测法是在一个过零点处开始以非常高的时钟脉冲计数,来确定 N 个信号周期所需的时间,从而进一步估计频率。该算法的运算量小且实现逻辑简单,但当信噪比较低时精度不能令人满意。自适应法是用最小均方算法(LMS)自适应调整基于自回归 AR 模型的 LP 的系数,然后通过对频率轴的扫描根据 LP谱峰值来确定信号的频率。自适应法可以实现高精度和连续调节的窄带频率估计,但该算法需要一定的自适应时间。由过零检测法和自适应法的以上特点可以看出,它们无法应用到宽带回波的多普勒频移估计中。
由波束散射模型可以看出,任意时刻的回波都是全部发射信号在对应某空间范围内的响应。这一情况使得回波与发射信号之间差异很大,特别是在发射信号形式较为复杂的时候。由于信号形式的不同情况,选择流速估计器的主要原则是在保证一定测速性能的基础上,考虑快速灵活的测量要求。可以看到,基于时域相位思想的复自相关算法因其快速灵活可控的特点而成为了流速估计的一个合适选择。
3.2复自相关算法
复自相关算法的主要思想是确定两段回波信号之间的幅值和相位关系,从而确定两段回波信号之间的频率。复自相关算法适合于不同信号下的流速的测量,因而是应用较为广泛的方法。从功率谱的观点出发,多普勒频移测量的问题就转化为确定观测信号功率谱密度的一阶矩。在此令回波的复数观测信号为:
(30)
这里s(t)是含有多普勒信息的复数观测信号,n(t)为零均值独立平稳复高斯噪声。x(t) 对 应 的 协 方 差 函 数 与 功 率 谱 密 度 可 以 分 别 表 示 为 :。于是主要问题就是估计多普勒频率均值 ,它可以用s(t)功率谱的一阶矩表示为
(31)
首先,将 x(t),s(t)与n(t)的自相关函数表示成极坐标形式
(32)
(33)
由于假定噪声是非零独立平稳高斯的,所以有
(34)
因此就有。这说明时对的计算可得到,即可以用来代替。
其次,对式(33)的求导,有
(35)
由于为偶函数,为奇函数,所以。因此
(36)
另外根据维纳-辛钦定理
(37)
(38)
对式(37)的求导,有
(39)
当时,式(37)与式(39)式变为
(40)
(41)
最后,将式(36)、式(40)与式(41)带入到式(31),得到
(42)
由式(42)可以看出,多普勒频率均值可以由回波复数观测信号自相关函数相位的导数来表示。于是进一步可以看出,对于线性相位情况,就有如下关系成立
(43)
式(43)就是得到的多普勒频率均值的复自相关算法的估计公式,其中是自相关函数的相位。由复自相关函数及其相位的公式
(44)
对于复数观测信号可以表示为
(45)
以上的式(45)等价于 Kay 所给出的线性预测估计器。值得注意的是,由于反正切运算使得相位函数被限制在[−π,π]之间,而真实的取值不应该被限制在这一范围。
由复自相关算法的估计公式可以看出,不论是发射单载频矩形脉冲信号,还是发射其它更为复杂的信号形式,只要具有时间间隔的两段回波信号之间存在着相干性,就都可以通过复自相关算法确定这两段回波信号之间的多普勒频率。因此基于复自相关算法的回波处理,多普勒速度测量将会变得非常灵活。
4.DVL系统仿真分析
4.1DVL系统CW回波信号的生成
根据前面的理论分析,下面给出的是基于CW信号的回波生成函数的M代码:
function Orignal = DVL_CW_echo_gen(f0,fs,tao,c,total_time,SNR,H,vg,attitude_angle,alpha,beta)
% ************************** DVL CW信号生成回波信号函数 **************************
% 假设海底是一个平面
% 依据Janus阵型结构四子阵测得的径向多普勒速度,根据转换矩阵B转换得到基阵坐标系下
% 的速度,然后再依据转换矩阵R得到大地坐标系下的速度.
% 参考文献:[1] 刘德铸,声学多普勒流速测量关键技术研究,2.4节.
% ∧
% 子阵1 ||y 子阵2
% ||
% 行船方向 <-----x---||---------
% ||
% 子阵4 || 子阵3
% ||
% **** 输入参数 ****
% ** f0 信号频率 单位:Hz
% ** fs 采样率 单位:Hz
% ** tao 发射信号脉宽 单位:s
% ** c 声速 单位:m/s
% ** total_time 采样信号总时间 单位:s
% ** SNR 信噪比 单位:dB
% ** H DVL距离海底的垂直高度 单位:m
% ** vg DVL相对于大地坐标系的三维速度,各分量分别位Vx,Vy,Vz 单位:m/s
% ** attitude_angle DVL的姿态角,各分量分别为Roll,Pitch,Yaw 单位:°
% ** alpha DVL换能器轴线方向与换能器阵轴线方向夹角,即安装角, 单位:°
% ** beta X型Janus阵型结构逆时针与坐标轴的夹角 单位:°
% **** 输出参数 ****
% ** Orignal 各通道的原始数据
%%
% 相关参数计算
alpha = alpha*pi./180;% 与z轴的夹角
beta = beta*pi./180;% X型Janus阵型结构逆时针与坐标轴的夹角
B = [sin(alpha)*cos(beta),sin(alpha)*sin(beta),cos(alpha);-sin(alpha)*sin(beta),sin(alpha)*cos(beta),cos(alpha);-sin(alpha)*cos(beta),-sin(alpha)*sin(beta),cos(alpha);sin(alpha)*sin(beta),-sin(alpha)*cos(beta),cos(alpha)];fai = attitude_angle(1)*pi./180;% 横摇 roll 沿x轴顺时针旋转
theta = attitude_angle(2)*pi./180;% 纵摇 pitch 沿y轴顺时针旋转
pfai = attitude_angle(3)*pi./180;% 艏摇 yaw 偏航 沿z轴顺时针旋转Fai = [1,0,0;0,cos(fai),sin(fai);0,-sin(fai),cos(fai)];
Theta = [cos(theta),0,-sin(theta);0,1,0;sin(theta),0,cos(theta)];
Pfai = [cos(pfai),sin(pfai),0;-sin(pfai),cos(pfai),0;0,0,1];
R = Pfai*Theta*Fai;% 坐标转换矩阵% vd = pinv(B)*vb;% 基阵坐标系下的速度
% vg = R*pinv(B)*vb;% 大地坐标系下的速度
vb = B*pinv(R)*vg; % 由大地坐标系下的速度得到换能器的多普勒径向速度 DIRO1 = [sin(alpha)*cos(beta);sin(alpha)*sin(beta);cos(alpha)]; %在换能器基阵坐标系中,1号换能器方向上的单位向量
DIRO2 = [-sin(alpha)*cos(beta);sin(alpha)*sin(beta);cos(alpha)]; %在换能器基阵坐标系中,2号换能器方向上的单位向量
DIRO3 = [-sin(alpha)*cos(beta);-sin(alpha)*sin(beta);cos(alpha)]; %在换能器基阵坐标系中,3号换能器方向上的单位向量
DIRO4 = [sin(alpha)*cos(beta);-sin(alpha)*sin(beta);cos(alpha)]; %在换能器基阵坐标系中,4号换能器方向上的单位向量DIRO1_g = R*DIRO1; %在大地坐标系中,1号换能器方向上的单位向量
DIRO2_g = R*DIRO2; %在大地坐标系中,2号换能器方向上的单位向量
DIRO3_g = R*DIRO3; %在大地坐标系中,3号换能器方向上的单位向量
DIRO4_g = R*DIRO4; %在大地坐标系中,4号换能器方向上的单位向量
DIRZ_g = [0;0;1]; %大地坐标系中Z轴方向的单位向量dis1 = H/(DIRO1_g'*DIRZ_g); %1号换能器的声波传播距离
dis2 = H/(DIRO2_g'*DIRZ_g); %2号换能器的声波传播距离
dis3 = H/(DIRO3_g'*DIRZ_g); %3号换能器的声波传播距离
dis4 = H/(DIRO4_g'*DIRZ_g); %4号换能器的声波传播距离
dis = [dis1;dis2;dis3;dis4];
%%
% 生成各基元回波信号
sig_points = fix(total_time*fs); %总采样点数
Orignal = zeros(4,sig_points);
temp = 10^(-SNR/20);for i = 1:4tt = 2*dis(i)/c; %计算回波的开始时刻 d_f = f0*2*vb(i)/c; %计算多普勒频移f_r = f0 + d_f; %接收的回波信号频率tao_compressd = tao/(1+2*vb(i)/c); %计算压缩后的脉宽nTs = 0:1/fs:tao_compressd; %被压缩的回波信号时刻Echo_points = length(nTs); %被压缩的回波采样点数tt_num = fix(tt*fs)+1; %转换成时刻点phase = (tt_num/fs - tt)*f_r*2*pi; %采样认为回波信号开始的时刻与真实的开始时刻相位差 Orignal(i,tt_num:(tt_num + Echo_points-1)) = cos(2*pi*f_r*nTs + phase); %对回波信号采样noise = randn(1,sig_points);noise = noise * temp;Orignal(i,:) = Orignal(i,:) + noise; %加入一定信噪比的噪声
end
4.2基于仿真信号的DVL系统仿真
由前面的理论分析,采用复自相关算法进行信号处理,编写的M代码如下:
% DVL信号处理
close all
clear all
clcc = 1500;
fs = 600e3; %采样率
f0 = 400e3; %CW信号频率
tao = 5.0e-3;
cw_with_ms = tao*1000;
total_time = 0.14;
H = 10; %深度
alpha = 22.5; %换能器轴线方向与换能器阵轴线方向夹角,即安装角,单位:°
beta = 45; %X型Janus阵型结构逆时针与坐标轴的夹角 单位:°
attitude_angle = [2 5 4.5]; %姿态角,此时基阵坐标与大地坐标重合
vg1 = [1;-1;0.5]; %DVL相对于大地坐标系速度
SNR = 40; %信噪比Orignal1 = DVL_CW_echo_gen(f0,fs,tao,c,total_time,SNR,H,vg1,attitude_angle,alpha,beta);discard_points = 1; %舍去一开始的点数
end_points = 30000;
ORI_Channel1 = Orignal1(1,discard_points:end_points); %读取第一个通道的数据
ORI_Channel2 = Orignal1(2,discard_points:end_points);
ORI_Channel3 = Orignal1(3,discard_points:end_points);
ORI_Channel4 = Orignal1(4,discard_points:end_points);sample_points = length(ORI_Channel1); %获取一个通道的采样点数
nTs = (0:sample_points-1)/fs + cw_with_ms/1000 + discard_points/fs; %采样时刻
sig_points = fix(cw_with_ms*fs/1000*1)+1; %信号脉宽一半占的采样点数/2
delay_n = 1; %延时点数fix(sig_points/2)/2 fix(sig_points*1/2)figure;
plot(ORI_Channel1,'r');
hold on;
grid on;
plot(ORI_Channel2,'b');
plot(ORI_Channel3,'c');
plot(ORI_Channel4,'g');
legend('通道1','通道2','通道3','通道4');
title('原始数据');
figure;
plot(nTs,ORI_Channel1,'r');
hold on;
grid on;
plot(nTs,ORI_Channel2,'b');
plot(nTs,ORI_Channel3,'c');
plot(nTs,ORI_Channel4,'g');
legend('通道1','通道2','通道3','通道4');
xlabel('时间/s');
title('原始数据');
%%
%正交变换
cos_table = cos(2*pi*f0*nTs);
sin_table = sin(2*pi*f0*nTs);cos_ORI_Channel1 = ORI_Channel1.*cos(2*pi*f0*nTs);
sin_ORI_Channel1 = ORI_Channel1.*sin(2*pi*f0*nTs);
cos_ORI_Channel2 = ORI_Channel2.*cos(2*pi*f0*nTs);
sin_ORI_Channel2 = ORI_Channel2.*sin(2*pi*f0*nTs);
cos_ORI_Channel3 = ORI_Channel3.*cos(2*pi*f0*nTs);
sin_ORI_Channel3 = ORI_Channel3.*sin(2*pi*f0*nTs);
cos_ORI_Channel4 = ORI_Channel4.*cos(2*pi*f0*nTs);
sin_ORI_Channel4 = ORI_Channel4.*sin(2*pi*f0*nTs);figure;
subplot(2,1,1);
plot(cos_ORI_Channel1,'r');
hold on;
grid on;
plot(cos_ORI_Channel2,'b');
plot(cos_ORI_Channel3,'c');
plot(cos_ORI_Channel4,'g');
legend('通道1','通道2','通道3','通道4');
title('*cos');
subplot(2,1,2);
plot(sin_ORI_Channel1,'r');
hold on;
grid on;
plot(sin_ORI_Channel2,'b');
plot(sin_ORI_Channel3,'c');
plot(sin_ORI_Channel4,'g');
legend('通道1','通道2','通道3','通道4');
title('*sin');
%*************** LPF Fpass = 16KHz Fstop = 40kHz 64阶 *************************
hn = [0.0004 0.0004 0.0004 0.0002 -0.0001 -0.0007 -0.0014 -0.0020 -0.0023 -0.0021 -0.0012 0.0006 0.0029 0.0053...0.0073 0.0081 0.0072 0.0040 -0.0013 -0.0080 -0.0151 -0.0209 -0.0236 -0.0213 -0.0130 0.0019 0.0228 0.0480...0.0749 0.1006 0.1218 0.1358 0.1407 0.1358 0.1218 0.1006 0.0749 0.0480 0.0228 0.0019 -0.0130 -0.0213...-0.0236 -0.0209 -0.0151 -0.0080 -0.0013 0.0040 0.0072 0.0081 0.0073 0.0053 0.0029 0.0006 -0.0012 -0.0021...-0.0023 -0.0020 -0.0014 -0.0007 -0.0001 0.0002 0.0004 0.0004 0.0004];LPF_cos_ORI_Channel1 = filter(hn,1,cos_ORI_Channel1);
LPF_sin_ORI_Channel1 = filter(hn,1,sin_ORI_Channel1);
LPF_cos_ORI_Channel2 = filter(hn,1,cos_ORI_Channel2);
LPF_sin_ORI_Channel2 = filter(hn,1,sin_ORI_Channel2);
LPF_cos_ORI_Channel3 = filter(hn,1,cos_ORI_Channel3);
LPF_sin_ORI_Channel3 = filter(hn,1,sin_ORI_Channel3);
LPF_cos_ORI_Channel4 = filter(hn,1,cos_ORI_Channel4);
LPF_sin_ORI_Channel4 = filter(hn,1,sin_ORI_Channel4);figure;
subplot(2,1,1);
plot(LPF_cos_ORI_Channel1,'r');
hold on;
grid on;
plot(LPF_cos_ORI_Channel2,'b');
plot(LPF_cos_ORI_Channel3,'c');
plot(LPF_cos_ORI_Channel4,'g');
legend('通道1','通道2','通道3','通道4');
title('*cos经过LPF');
subplot(2,1,2);
plot(LPF_sin_ORI_Channel1,'r');
hold on;
grid on;
plot(LPF_sin_ORI_Channel2,'b');
plot(LPF_sin_ORI_Channel3,'c');
plot(LPF_sin_ORI_Channel4,'g');
legend('通道1','通道2','通道3','通道4');
title('*sin经过LPF');%%
%生成复数
complex_ORI_Channel1 = LPF_cos_ORI_Channel1 + 1j*LPF_sin_ORI_Channel1;
complex_ORI_Channel2 = LPF_cos_ORI_Channel2 + 1j*LPF_sin_ORI_Channel2;
complex_ORI_Channel3 = LPF_cos_ORI_Channel3 + 1j*LPF_sin_ORI_Channel3;
complex_ORI_Channel4 = LPF_cos_ORI_Channel4 + 1j*LPF_sin_ORI_Channel4;figure;
subplot(2,1,1);
plot(abs(complex_ORI_Channel1),'r');
hold on;
grid on;
plot(abs(complex_ORI_Channel2),'b');
plot(abs(complex_ORI_Channel3),'c');
plot(abs(complex_ORI_Channel4),'g');
legend('通道1','通道2','通道3','通道4');
title('复信号幅度');
subplot(2,1,2);
plot(angle(complex_ORI_Channel1)/pi*180,'r');
hold on;
grid on;
plot(angle(complex_ORI_Channel2)/pi*180,'b');
plot(angle(complex_ORI_Channel3)/pi*180,'c');
plot(angle(complex_ORI_Channel4)/pi*180,'g');
legend('通道1','通道2','通道3','通道4');
title('相位°');%%
% 复数自相关
autocor_points = sig_points - delay_n;
for i = (autocor_points+delay_n):sample_pointsset = (1:autocor_points) + i - (autocor_points);R_complex_ORI_Channel1(i) = complex_ORI_Channel1(set-delay_n)*complex_ORI_Channel1(set)';R_complex_ORI_Channel2(i) = complex_ORI_Channel2(set-delay_n)*complex_ORI_Channel2(set)';R_complex_ORI_Channel3(i) = complex_ORI_Channel3(set-delay_n)*complex_ORI_Channel3(set)';R_complex_ORI_Channel4(i) = complex_ORI_Channel4(set-delay_n)*complex_ORI_Channel4(set)';
endAmp1 = abs(R_complex_ORI_Channel1);
Fai1 = angle(R_complex_ORI_Channel1);
Amp2 = abs(R_complex_ORI_Channel2);
Fai2 = angle(R_complex_ORI_Channel2);
Amp3 = abs(R_complex_ORI_Channel3);
Fai3 = angle(R_complex_ORI_Channel3);
Amp4 = abs(R_complex_ORI_Channel4);
Fai4 = angle(R_complex_ORI_Channel4);figure;
plot(Fai1/pi*180,'r');
hold on;
grid on;
plot(Fai2/pi*180,'b');
plot(Fai3/pi*180,'c');
plot(Fai4/pi*180,'g');
legend('通道1','通道2','通道3','通道4');
title('复自相关相位');%%norm_amp1 = Amp1/max(Amp1);
norm_amp2 = Amp2/max(Amp2);
norm_amp3 = Amp3/max(Amp3);
norm_amp4 = Amp4/max(Amp4);[echo_time1,v1,Fai_set1] = Echo_time_v_estimate(Amp1,sig_points,sample_points,Fai1,c,fs,f0,delay_n);
[echo_time2,v2,Fai_set2] = Echo_time_v_estimate(Amp2,sig_points,sample_points,Fai2,c,fs,f0,delay_n);
[echo_time3,v3,Fai_set3] = Echo_time_v_estimate(Amp3,sig_points,sample_points,Fai3,c,fs,f0,delay_n);
[echo_time4,v4,Fai_set4] = Echo_time_v_estimate(Amp4,sig_points,sample_points,Fai4,c,fs,f0,delay_n);Echo_time = [echo_time1,echo_time2,echo_time3,echo_time4];
Echo_time = Echo_time/fs - tao;
H1 = DVL_Hight_Estimate(Echo_time,c,attitude_angle,alpha,beta);figure;
plot(norm_amp1);
hold on;
grid on;
plot(Fai1/max(abs(Fai1)),'r');
plot(echo_time1,0,'*k');
plot(Fai_set1,Fai1(Fai_set1)/max(abs(Fai1)),'g*');
legend('复数自相关幅度','相位','估计的到达时刻','截取的相位区间');
string = ['估计的到达时刻 n=',num2str(echo_time1),',估计的速度 v1=',num2str(v1),'m/s'];
title(string);figure;
plot(norm_amp2);
hold on;
grid on;
plot(Fai2/max(abs(Fai2)),'r');
plot(echo_time2,0,'*k');
plot(Fai_set2,Fai2(Fai_set2)/max(abs(Fai2)),'g*');
legend('复数自相关幅度','相位','估计的到达时刻','截取的相位区间');
string = ['估计的到达时刻 n=',num2str(echo_time2),',估计的速度 v2=',num2str(v2),'m/s'];
title(string);figure;
plot(norm_amp3);
hold on;
grid on;
plot(Fai3/max(abs(Fai3)),'r');
plot(echo_time3,0,'*k');
plot(Fai_set3,Fai3(Fai_set3)/max(abs(Fai3)),'g*');
legend('复数自相关幅度','相位','估计的到达时刻','截取的相位区间');
string = ['估计的到达时刻 n=',num2str(echo_time3),',估计的速度 v3=',num2str(v3),'m/s'];
title(string);figure;
plot(norm_amp4);
hold on;
grid on;
plot(Fai4/max(abs(Fai4)),'r');
plot(echo_time4,0,'*k');
plot(Fai_set4,Fai4(Fai_set4)/max(abs(Fai4)),'g*');
legend('复数自相关幅度','相位','估计的到达时刻','截取的相位区间');
string = ['估计的到达时刻 n=',num2str(echo_time4),',估计的速度 v4=',num2str(v4),'m/s'];
title(string);vb = [v1 v2 v3 v4]';
[vg,vd] = Get_absolute_velocity(alpha,beta,vb,attitude_angle); %相对大地速度,相对基阵速度
其中调用的三个子函数(Echo_time_v_estimate、DVL_Hight_Estimate、Get_absolute_velocity)代码分别如下:
function [echo_time,v,Fai_set] = Echo_time_v_estimate(Amp,sig_points,sample_points,Fai,c,fs,f0,delay_n)
%****************************** 回波时间与速度估计 *************************
% **** 输入参数
% ** Amp 复信号自相关后的幅度
% ** sig_points 发射信号脉宽占的采样信号点数
% ** sample_points 总采样点数,即信号总长度
% ** Fai 复信号自相关后的相位
% ** c 声速
% ** fs 采样率
% ** f0 载波频率
% ** delay_n 复自相关延迟的采样点数
% **** 输出参数
% ** echo_time 估计的回波时间
% ** v 估计的回波速度
% ** Fai_set 回波时刻对应的相位区间
%%
max_sum = sum(Amp(1:sig_points));
max_set = 1;
for i = 2:sample_points - sig_pointstemp = sum(Amp(i:(i+sig_points-1)));if temp > max_summax_sum = temp; %寻找最大值max_set = i; %记录最大值位置end
endX = max_set:(max_set+sig_points-1);
Y = Amp(X);
echo_time = sum(X.*Y)/sum(Y); %质量中心法求最大值点
echo_time_int = fix(echo_time);Q_sig_points = fix(sig_points/4);
Fai_set = (echo_time_int-Q_sig_points):(echo_time_int+Q_sig_points);
Fai_avr = sum(Fai(Fai_set))/((2*Q_sig_points+1));v = Fai_avr*c*fs/(4*pi*delay_n*f0); %估计速度
function H = DVL_Hight_Estimate(Echo_time,c,attitude_angle,alpha,beta)
% *************** DVL高度估计 **********************
% 依据Janus阵型结构四子阵测得的径向多普勒速度,根据转换矩阵B转换得到基阵坐标系下
% 的速度,然后再依据转换矩阵R得到大地坐标系下的速度.
% 参考文献:[1] 刘德铸,声学多普勒流速测量关键技术研究,2.4节.
% ∧
% 子阵1 ||y 子阵2
% ||
% 行船方向 <-----x---||---------
% ||
% 子阵4 || 子阵3
% ||
% **** 输入参数 ****
% ** Echo_time 由各换能器估计的到达时刻 单位:s
% ** c 声速 单位:m/s
% ** attitude_angle DVL的姿态角,各分量分别为Roll,Pitch,Yaw 单位:°
% ** alpha DVL换能器轴线方向与换能器阵轴线方向夹角,即安装角, 单位:°
% ** beta X型Janus阵型结构逆时针与坐标轴的夹角 单位:°
% **** 输出参数 ****
% ** H 估计的高度 单位:m
%%
alpha = alpha*pi./180;% 与z轴的夹角
beta = beta*pi./180;% X型Janus阵型结构逆时针与坐标轴的夹角
fai = attitude_angle(1)*pi./180;% 横摇 roll 沿x轴顺时针旋转
theta = attitude_angle(2)*pi./180;% 纵摇 pitch 沿y轴顺时针旋转
pfai = attitude_angle(3)*pi./180;% 艏摇 yaw 偏航 沿z轴顺时针旋转Fai = [1,0,0;0,cos(fai),sin(fai);0,-sin(fai),cos(fai)];
Theta = [cos(theta),0,-sin(theta);0,1,0;sin(theta),0,cos(theta)];
Pfai = [cos(pfai),sin(pfai),0;-sin(pfai),cos(pfai),0;0,0,1];
R = Pfai*Theta*Fai;% 坐标转换矩阵DIRO1 = [sin(alpha)*cos(beta);sin(alpha)*sin(beta);cos(alpha)]; %在换能器基阵坐标系中,1号换能器方向上的单位向量
DIRO2 = [-sin(alpha)*cos(beta);sin(alpha)*sin(beta);cos(alpha)]; %在换能器基阵坐标系中,2号换能器方向上的单位向量
DIRO3 = [-sin(alpha)*cos(beta);-sin(alpha)*sin(beta);cos(alpha)]; %在换能器基阵坐标系中,3号换能器方向上的单位向量
DIRO4 = [sin(alpha)*cos(beta);-sin(alpha)*sin(beta);cos(alpha)]; %在换能器基阵坐标系中,4号换能器方向上的单位向量DIRO1_g = R*DIRO1; %在大地坐标系中,1号换能器方向上的单位向量
DIRO2_g = R*DIRO2; %在大地坐标系中,2号换能器方向上的单位向量
DIRO3_g = R*DIRO3; %在大地坐标系中,3号换能器方向上的单位向量
DIRO4_g = R*DIRO4; %在大地坐标系中,4号换能器方向上的单位向量
DIRZ_g = [0;0;1]; %大地坐标系中Z轴方向的单位向量dis = Echo_time*c/2; %得到各换能器到地面的距离H1 = dis(1)*DIRO1_g'*DIRZ_g; %由1号换能器估计的距离
H2 = dis(2)*DIRO2_g'*DIRZ_g; %由2号换能器估计的距离
H3 = dis(3)*DIRO3_g'*DIRZ_g; %由3号换能器估计的距离
H4 = dis(4)*DIRO4_g'*DIRZ_g; %由4号换能器估计的距离H = (H1+H2+H3+H4)/4; %得到最终的高度
function [vg,vd] = Get_absolute_velocity(alpha,beta,vb,attitude_angle)
% ************************ ADCP流速坐标系转换 ******************************
% 依据Janus阵型结构四子阵测得的径向多普勒速度,根据转换矩阵B转换得到基阵坐标系下
% 的速度,然后再依据转换矩阵R得到大地坐标系下的速度.
% 参考文献:[1] 刘德铸,声学多普勒流速测量关键技术研究,2.4节.
% ∧
% 子阵1 ||y 子阵2
% ||
% 行船方向 <-----x---||---------
% ||
% 子阵4 || 子阵3
% ||
% **** 输入参数
% ** alpha 换能器轴线方向与换能器阵轴线方向夹角,即安装角,单位:°
% ** beta X型Janus阵型结构逆时针与坐标轴的夹角 单位:°
% ** vb 各换能器的径向速度 单位:m/s
% ** attitude_angle 姿态角 单位:°
% **** 输出参数
% ** vg 输出对地速度 单位:m/salpha = alpha*pi./180;% 与z轴的夹角
beta = beta*pi./180;% X型Janus阵型结构逆时针与坐标轴的夹角
B = [sin(alpha)*cos(beta),sin(alpha)*sin(beta),cos(alpha);-sin(alpha)*sin(beta),sin(alpha)*cos(beta),cos(alpha);-sin(alpha)*cos(beta),-sin(alpha)*sin(beta),cos(alpha);sin(alpha)*sin(beta),-sin(alpha)*cos(beta),cos(alpha)];
% vb = [1 1 1 1]';% 换能器测出多普勒径向速度
vd = pinv(B)*vb;% 基阵坐标系下的速度fai = attitude_angle(1)*pi./180;% 横摇 roll 沿x轴顺时针旋转
theta = attitude_angle(2)*pi./180;% 纵摇 pitch 沿y轴顺时针旋转
pfai = attitude_angle(3)*pi./180;% 艏摇 yaw 偏航 沿z轴顺时针旋转Fai = [1,0,0;0,cos(fai),sin(fai);0,-sin(fai),cos(fai)];
Theta = [cos(theta),0,-sin(theta);0,1,0;sin(theta),0,cos(theta)];
Pfai = [cos(pfai),sin(pfai),0;-sin(pfai),cos(pfai),0;0,0,1];
R = Pfai*Theta*Fai;% 坐标转换矩阵vg = R*vd;% 大地坐标系下的速度
运行得到结果如下:
仿真输入的三维速度为[1;-1;0.5],高度为10;估计的三维速度[0.9919;-0.9887;0.4948],估计的高度为10.0365。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 【转】C#编写NotifyIcon 将窗口最小化到托盘
1.设置窗体属性showinTask=false 2.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标。 3.添加窗体最小化事件(首先需要添加事件引用): // this.SizeChanged += new System.EventHandler(this.Form1_SizeChanged); //上面一行是主窗体InitializeCom…...
2024/4/28 14:44:18 - 提高程序员生产力的代码生成器
码云 Gitee 项目推荐1. 项目名称:基于代码生成器的 J2EE 快速开发平台 jeecg项目简介:JEECG(J2EE Code Generation)是一款基于代码生成器的智能开发平台。引领新的开发模式( Online Coding -> 代码生成器 -> 手工 MERGE 智能开发),可以帮助解决 Java 项目 60% 的重复…...
2024/4/27 23:57:42 - Larbin 配置
ubuntu下1. 需要安装makedepend sudo apt-get install xutils-dev 2. 把adns文件夹下internal.h文件569-571 注释掉 3. 把所有#include<iostream.h> 替换为#include<iostream> 并且加上using namespace std;还有一个简单的方法,就是从/usr/include/c++里…...
2024/4/28 15:08:00 - 关于NotifyIcon的抱怨。。。
.NET中微软提供了NotifyIcon类来处理应用程序在托盘区的图标显示,并且该对象可以设置一个ContextMenu对象,方便应用程序进行快捷操作。但是,ContextMenu是以右键点击的方式弹出来的,而实际开发中用户经常要求左键单击的时候也能够弹出菜单进行操作,可是微软在NotifyIcon中…...
2024/4/28 6:23:40 - “疯狂代码生成器” 正式发布
简单而言,DevHelper是一款为程序员开发的代码自动生成工具。中文名叫“疯狂代码生成器”。复杂来说,DevHelper是基于多种数据库多种开发语言的模板化代码代码生成器。它提供丰富的标准库以及简单的接口和逻辑结构,其目的是使开发人员更快速地进行项目框架搭建。目前支持数据…...
2024/4/28 10:29:44 - Kinect 开发 —— 硬件设备解剖
Kinect for Xbox: 360 不支持“近景模式” 三只眼睛 —— 红外投影机,RGB摄像头,红外深度投影头 —— 色彩影像中的每个像素分别与深度影像中的一个像素对应 四只耳朵 —— L形布局的麦克风阵列 —— 过滤背景噪声,定位声源 —— 根据麦克风阵列接听声音的时间差来判断声源…...
2024/4/28 5:56:17 - Flash actionscrip视频教程
第一章 基础 1 帧2 层3 时间轴4 元件5 动作面板6 强化练习——MTV的片头17 强化练习——MTV的片头28 强化练习——MTV的片头39 强化练习——MTV的片头410 强化练习——MTV的片头5第二章 动作面板(已发布) 1 添加动作2 帧上添加动作3 强化练习——变动的文字4 影片剪辑上添加动…...
2024/4/28 4:44:14 - SpringBoot集成MyBatis Generator代码生成器
在原有SpringBoot+gradle构建的项目上(项目地址chen1218chen/Springboot-Mybatis-Gradle)继续集成MyBatis Generator来自动生成model层、dao层代码,以实现快速开发。修改build.gradle文件首先,在gradle的配置文件中添加依赖:compile group: org.mybatis.generator, name: …...
2024/4/28 13:29:08 - larbin的使用
一 编译 1 sudo apt-get install xutils-dev 2 注释掉adns下internal.h中第568—571行代码 3 到/usr/include/c++/下CP一份iostream文件到larbin的src目录下。并将其的名改为iostream.h.打开此文件添加一句using namespace std; 4 ./configure && make二 配置 修改lar…...
2024/4/28 4:02:28 - 声音导引系统及信号采集处理电路设计
2009年参加了全国大学生电子竞赛,经过全队三人的努力,最终荣获全国一等奖(当年浙江省本科组全国一等奖好像一共5个队伍),在这里特别感谢武林老师,是他为我们创造了这么好的条件,才能够在电子竞赛的道路上走的更加顺畅。我也是在今天整理资料的时候忽然发现了这篇文章,这…...
2024/4/21 8:39:46 - Jeesite使用自动代码生成器生成代码流程步骤
步骤一: 搭建Jeesite环境 具体搭建不做赘述了,相信有很多帖子已经是写的很清楚了,我就不再做多余的解释了步骤二: 设计表格 自行根据业务需要设计一张表格,然后通过你最喜欢的方式新建到jeesite数据库中,这里需要注意的是你的表格需有id字段且为不自增主键(因为Jeesite为做主键…...
2024/4/21 8:39:43 - Flash资源加载
Flash资源加载Flash加载swf、图形资源使用的是loader类,下面贴代码更多内容请看:[url="http://www.yoewan.com"]yoewan分享[/url],[url="http://www.yoewan.com/flex"]Flash教程[/url]转载自:[url="http://www.yoewan.com/flash-resource-loading.ht…...
2024/4/20 10:59:04 - 聊聊麦克风阵列
首先我们简单聊聊什么是麦克风阵列。麦克风阵列 ≠ 一堆麦克风风吹麦浪,高山流水,蛙声虫鸣......人类能听到的声音大约有40多万种,频率在20至20000赫兹之间。而在嘈杂的环境下,机器想要听懂声音,它必须能够听的更远更清晰,人类可以带上助听器,机器需要什么呢?麦克风阵列…...
2024/4/21 8:39:41 - larbin跑起来了,下一步就是阅读代码了
03年的代码就是不好编译通过,即使现在larbin跑起来了,还是出现很多的警告首先在下载larbin源代码。我下载的版本是larbin2.6.3第一步: 注释adns目录下的internal.h的569到571行第二步:到iostream的目录下复制一份到同一目录,文件名iostream.h,也就是说,iostream在什么目…...
2024/4/21 8:39:41 - jeesite代码生成器的使用(实例:报销表)
阅读本文前需要已经搭建好jeesite环境,具体请查看官方文档:http://www.jeesite.com/ PS.官方文档写得含糊且有不少错误,我焦头烂额地配置了两天才搭建好环境,不幸的是忘记记录了,如果有时间以后会写一份搭建环境的文档。本文将使用jeesite生成代码功能,设计并实现报销流程…...
2024/4/21 8:39:39 - 声道数
声道数 是指支持能不同发声的音响的个数,它是衡量音响设备的重要指标之一。 当人听到声音时,能对声源进行定位,那么通过在不同的位置设置声源,就可以造就出更好的听觉感受,如果配合影像进行音频位置的调整,则会得到更好的视听效果。常见的声道有:单声道的声道数为1个声道…...
2024/4/20 18:26:24 - Go:微服务框架开发三(代码生成工具开发)
目录 共性抽象 代码生成工具设计 代码生成工具开发共性抽象package main import("log""net"pb "github.com/ibinarytree/koala/example/grpc_example/hello""golang.org/x/net/context""google.golang.org/grpc" ) …...
2024/4/20 18:26:24 - 较为详细的MUSIC算法原理及MATLAB实现
DOA估计算法 DOA(Direction Of Arrival)波达方向定位技术主要有ARMA谱分析、最大似然法、熵谱分析法和特征分解法,特征分解法主要有MUSIC算法、ESPRIT算法WSF算法等。 MUSIC (Multiple Signal Classification)算法,即多信号分类算法,由Schmidt等人于1979年提出。MUSIC算法…...
2024/4/27 9:05:19 - NotifyIcon托盘组件的应用
<br />1、新建一个Form程序<br />2、拖拽一个NotifyIcon组件<br />订阅两个事件,代码如下:<br /><br /> private void ServiceForm_SizeChanged(object sender, EventArgs e)<br /> {<br /> if (this.WindowS…...
2024/4/26 14:59:36 - 基于MybatisGenerator扩展的 Model & Mapper & Service & Controller代码生成器
新鲜出炉的基于数据库表 自动生成Mybatis的 Model & Mapper & Service & Controller 等的代码的代码生成器,基于Mybatis Generator扩展其JavaMapper和XmlMapper的实现,一个普通业务网站的后端逻辑,点一下鼠标就实现了,项目链接:https://github.com/fenglibin/C…...
2024/4/21 8:39:38
最新文章
- 【ARM Cache 系列文章 11.1 -- ARM Cache 组织形式详细介绍 2】
请阅读【ARM Cache 系列文章专栏导读】 文章目录 Cache 全相连(Fully Associative)全相联映射示例全相联映射原理紧接文章:【ARM Cache 系列文章 11 – ARM Cache 组织形式详细介绍】 Cache 全相连(Fully Associative) 介绍: 在全相连缓存中,任何内存地址都可以缓存在…...
2024/4/29 2:19:56 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - Docker Desktop+WSL2安装到自定义路径
现在大多数软件实在太“流氓”了,在安装过程中,根本不让你选择安装路径,默认安装到$HOME下(windows C盘),随着软件的使用增多,可能磁盘空间不够,这个时候就想着,看看某些…...
2024/4/27 13:24:41 - HarmonyOS NEXT应用开发之@State装饰器:组件内状态
State装饰的变量,或称为状态变量,一旦变量拥有了状态属性,就和自定义组件的渲染绑定起来。当状态改变时,UI会发生对应的渲染改变。 在状态变量相关装饰器中,State是最基础的,使变量拥有状态属性的装饰器&a…...
2024/4/27 18:01:54 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/28 13:52:11 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/28 3:28:32 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/26 23:05:52 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/28 13:51:37 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/28 15:57:13 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/28 1:22:35 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/26 19:46:12 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/27 11:43:08 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/27 8:32:30 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57