有限差分法在matlab中绘制0-100km内地震一维波动传播动图,标注坐标轴
时间: 2023-06-23 11:09:15 浏览: 104
以下是一个简单的MATLAB代码,用有限差分法绘制0-100km内地震一维波动传播动图,并标注坐标轴:
```matlab
% 设置模型参数
vp = 2500; % 纵波速度
rho = 2000; % 密度
dx = 100; % 网格间距
dt = 0.001; % 时间间隔
nt = 1000; % 时间步数
nx = 1001; % 空间步数
x = (0:nx-1)*dx/1000; % 空间坐标
% 初始化波场和速度场
u = zeros(nx, nt);
v = vp*ones(nx, 1)/rho;
% 设置震源
src = 50; % 震源位置
f0 = 50; % 震源频率
t = (0:nt-1)*dt; % 时间坐标
src_signal = sin(2*pi*f0*t).*exp(-pi^2*f0^2*(t-1/f0).^2); % Ricker子波
u(src, 1:length(src_signal)) = src_signal;
% 有限差分计算
coeff = dt^2./v.^2;
for i = 3:nt
u(2:nx-1, i) = 2*u(2:nx-1, i-1) - u(2:nx-1, i-2) + ...
coeff(2:nx-1).*(u(3:nx, i-1) - 2*u(2:nx-1, i-1) + u(1:nx-2, i-1));
end
% 动图绘制
figure;
for i = 1:nt
plot(x, u(:, i));
xlabel('距离(km)');
ylabel('位移(m)');
title(['地震波传播动图,时间步数=', num2str(i)]);
axis([0 100 -0.1 0.1]);
drawnow;
end
```
运行以上代码,将生成一个动态的地震波传播动图,并且标注了横轴为距离(km)、纵轴为位移(m)的坐标轴。
阅读全文