%% 初始数据录入
digits(2)
T=zeros(1,2);%T坐标空集
load tABC.txt
loc_a=[0,0];%a点坐标
loc_b=[0.18,0];%b点坐标
loc_c=[0.25,0];%c点坐标
v=1000;%波的速度1000m/s
%%
data=tABC;%赋值方便输入
t=data(:,1);%时间
w=sum(data(:,2:end),2);
figure
plot(t*10^6,w) % 三波合一,便于分析时间
xlabel('时间/μs')
ylabel('幅度')
[~,id]=maxk(w,3);%获取波峰所在位置
T=t(id);%获取计算需要的时间间隔
%% 求▲TBC 各边边长
ATb=(T(2)-T(1))*v;ATc=(T(3)-T(1))*v;
bc=loc_c(1)-loc_b(1);
%% 设x为Tc的长度
syms x
ag1=fangle(x,loc_c(1),ATc-x,1);
ag2=fangle(loc_c(1)-loc_b(1),x,x-(ATc-ATb),1);
eqns =[ag1-ag2==0];
S=solve(eqns,x);%解得一个 0解 和 真解 此时的x为Tc的长度
Tc=double(S);
Tcb=fangle(Tc,bc,Tc-(ATc-ATb),2);%求角度
Tx=loc_c(1)-Tc*cosd(Tcb);%求T的横坐标
Ty=Tc*sind(Tcb);%求T的纵坐标
disp([' 利用三角形ATc和三角形Tcb公共角∠Tcb,余弦函数相等计算得到Tc长度为',num2str(Tc),'m,','Tb长度',num2str(Tc-(ATc-ATb)),'m.'])
%Tb长度
disp([' ∠Tcb度数为',num2str(Tcb),'°'])
disp([' T点坐标(',num2str(double(vpa(Tx,2)),1),',',num2str(Ty),')单位m'])
function [Ag]=fangle(a,b,c,n)
% n为1时仅计算余弦值,2时计算角度
if n==1
%所求角为c 的对角,本解法求 ∠Tcb
Ag=(a^2+b^2-c^2)/(2*a*b);%余弦公式
% Ag=acos(cc); %求∠Tcb角度
elseif n==2
%所求角为c 的对角,本解法求 ∠Tcb
Ag=(a^2+b^2-c^2)/(2*a*b);%余弦公式
Ag=acosd(Ag); %求∠Tcb角度
end
end