📄 扩颈.m
字号:
%入射速度波
a=0:pi/6:pi;
Vm=sin(a);
%线性渐变截面处各点高度
b(1)=0.4;b(9)=0.4;
for i=1:1:7
b(i+1)=0.6;%等值变宽截面
end
%各单元之间的传递函数参数
Tu(1)=0.5;Td(1)=0.5;%存储数据时多算两组,以方便后面的递推公式计算取值
Tu(10)=0.5;Td(10)=0.5;
for i=1:1:8
Tu(i+1)=b(i+1)/(b(i+1)+b(i));
Td(i+1)=b(i)/(b(i+1)+b(i));
end
Tu(1)=0.5;Td(1)=0.5;%存储数据时多算两组,以方便后面的递推公式计算取值
Tu(10)=0.5;Td(10)=0.5;
%第i单元第一时间初始条件
for i=1:1:31 %因为递推公式中要用到桩底的信号,故这儿多一个初始值i=31
Vu(i,1)=0; %j=1时,输入信号为零,故各单元初始值为零
Vd(i,1)=0;
end
%第i单元第j时间的速度
for j=2:1:70
for i=2:1:30
if i<=4
H=[1 0]; h=[0 1];
elseif i==5|i==6|i==12|i==13
H=[2*Tu(i-3)*Tu(i-3)/Td(i-3) (Td(i-3)-Tu(i-3))*Td(i-4)/Tu(i-4)];
h=[(Tu(i-3)-Td(i-3))*Tu(i-3)/Td(i-3) 2*Td(i-3)*Td(i-4)/Tu(i-4)];
elseif i==30 %桩底前一单元到桩底的传递函数
H=[0 1];h=[0 0];
else
H=[1 0];h=[0 1];
end
Vu(i,j)=H*[Vu(i+1,j-1);Vd(i-1,j-1)];
Vd(i,j)=h*[Vu(i+1,j-1);Vd(i-1,j-1)];
end
if j<=7
Vd(1,j)=Vm(j);
elseif j>=10 %因为起始段为桩顶,时间j=0记为零时输入信号时刻
Vu(1,j)=Vu(2,j-1);%故从第一个变截面处反射到桩顶所需要的时间为j=10
Vd(1,j+2)=Vu(1,j);
else
Vd(1,j)=0;
end
end
%桩顶接收到的速度波Vs
Vs=[];
for j=1:1:72
if j<=7
Vs(j)=Vd(1,j);
else
Vs(j)=2*Vd(1,j);
end
end
j=1:1:72;
plot(j-1,Vs);%桩顶与第一个单元的时差为1个单位时间
grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -