Demo entry 6571085

检测作业

   

Submitted by anonymous on Jun 03, 2017 at 09:03
Language: Matlab. Code size: 2.0 kB.

clear all;
clc;

f=2*10^6;
a=1*10^12;
t0=5*10^(-6);
% fs=1*10^9; %1GHz
fs=50*10^6; %50MHz
T=1/fs;
t=0:T:2*t0;
%%-------------1.绘制采样频率为1GHz下的s12波形--------------
%因为在存储时s12就存储成了采样频率为1GHz的散点,
%故可以直接用plot绘制其图形(默认差值绘制)
%也可以用scatter绘制其采样后的散点图像。
s12=sin(2*pi*f*t).*exp((-a*(t-t0).^2)/2);
figure(1);
plot(t,s12,'b');
% scatter(t,s12,20,'b.');
% title('超声波顺流传播信号s12,fs=1GHz');
title('超声波顺流传播信号s12,fs=50MHz');
xlabel('时间t/s');ylabel('s12');

%%-------------2.绘制顺流信号s12及三种时差下的逆流信号s21波形--------------
%将s12中的t改为t-delta_t即可
delta_t1=205*10^(-9);
delta_t2=210*10^(-9);
delta_t3=215*10^(-9);
s21_1=sin(2*pi*f*(t-delta_t1)).*exp((-a*(t-t0-delta_t1).^2)/2);
s21_2=sin(2*pi*f*(t-delta_t2)).*exp((-a*(t-t0-delta_t2).^2)/2);
s21_3=sin(2*pi*f*(t-delta_t3)).*exp((-a*(t-t0-delta_t3).^2)/2);
figure(2);
hold on;
plot(t,s12,'b',t,s21_1,'-g',t,s21_2,'-k',t,s21_3,'-r');
% scatter(t,s12,20,'b.');
% scatter(t,s21_1,20,'g.');
% scatter(t,s21_2,20,'k.');
% scatter(t,s21_3,20,'r.');
xlabel('时间t/s');ylabel('s12 and s21');
title('超声波顺流及逆流传播信号,fs=50MHz');
legend('顺流信号s_12','时差:205ns','时差:210ns','时差:215ns');

%%-------------3.用相关法估计s12和s21之间的时差--------------
%由于s12、s21是与采样频率相同的散点存储
%故可以先将s12和s21信号做卷积,得到长度为2*N-1的序列
%再找出最大的结果点对应的点的序列数,减去信号长度N
%乘以时间间隔即为时差
T1=1*10^(-9);%每隔1ns进行插值
ts=0:T1:2*t0;
s12_new=interp1(t,s12,ts,'PCHIP');
s21_2_new=interp1(t,s21_2,ts,'PCHIP');
[p,q]=xcorr(s12_new,s21_2_new);%互相关
figure(3);
plot(q*T1,p);
xlabel('时间t/s');ylabel('');
title('插值后顺流和逆流相关性分析,fs=50MHz');
[~,max_p]=max(p);
t_delta=(max_p-length(s12_new))*T1;
disp(t_delta*1e9);% 计算得到时延

%%-------------4.研究噪声对时差估计的影响--------------

noise1=1*randn(1,length(s12));
noise2=1*randn(1,length(s21_2));
k1=var(noise1);%噪声强度
k2=var(noise2);
s12_noise=s12+k1*noise1;
s21_2_noise=s21_2+k2*noise2;
[p,q]=xcorr(s12_noise,s21_2_noise);%利用互相关函数
figure(4);
plot(q*T,p);
xlabel('时间t/s');ylabel('');
title('加入噪声对相关性的影响,fs=50MHz');
[max_p1,max_p2]=max(p);
t_delta=(max_p2-length(s12))*T;
disp(t_delta*1e9);% 计算得到时延

This snippet took 0.00 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).