📄 突变窄(圆).m
字号:
%入射速度波
a=0:pi/10:pi;
Vm=sin(a);
%线性渐变截面处各点高度
for i=1:1:30
if i>5&i<13
b(i)=0.2;%等值变窄截面
else b(i)=0.4;
end
end
%第i单元第一时刻初始条件;由于Matlab中矩阵单元计数要从1开始,故j=1对应于实际中的就j=0
for i=1:1:31 %因为递推公式中要用到桩底的信号,故这儿多一个初始值i=31
Vu(i,1)=0; %j=1时,输入信号为零,故各单元初始值为零
Vd(i,1)=0;
end
%第i单元第j时刻的速度
%H,h各单元之间的传递函数参数
%m,n存储数据时多算两组,以方便后面的递推公式计算取值
for j=2:1:70
m=[];n=[];
for i=2:1:30
if i==30 %桩底前一单元到桩底的传递函数
H=[0 1];h=[0 0];
else
H=[2*b(i+1)/(b(i+1)+b(i)) (b(i)-b(i+1))*b(i-1)/(b(i+1)+b(i))/b(i)];
h=[(b(i+1)-b(i))*b(i+1)/(b(i+1)+b(i))/b(i) 2*b(i+1)*b(i-1)/(b(i+1)+b(i))/b(i)];
end
m=[m;H];n=[n;h];
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<=9
Vd(1,j)=Vm(j);
elseif j==10|j==11 %因为起始段为桩顶,时间j=0记为零时输入信号时刻
Vu(1,j)=Vu(2,j-1); %故从第一个变截面处反射到桩顶所需要的时间为j=10
Vd(1,j+2)=Vu(1,j)+Vm(j);
else
Vu(1,j)=Vu(2,j-1);
Vd(1,j+2)=Vu(1,j);
end
end
%桩顶接收到的速度波Vs
Vs=[];
for j=1:1:72
if j<=10
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 + -