使用matlab的k-wave工具箱模拟又孔洞木柱横截面超声传播

张开发
2026/6/1 14:03:21 15 分钟阅读
使用matlab的k-wave工具箱模拟又孔洞木柱横截面超声传播
1. 仿真案例情况简介模拟一个150mm×150mm的方形木柱在中心点又一个直径为10mm的圆形孔洞。横截面上表面中心点有一个点声源脉冲激励中心频率为100kHz设置4个接收点2. matlab代码clear; clc; close all; %% 1. 网格 Nx 300; Ny 300; dx 0.5e-3; dy 0.5e-3; kgrid kWaveGrid(Nx, dx, Ny, dy); %% 2. 创建内部孔洞10mm直径 diameter_mm 10; radius_mm diameter_mm / 2; radius_grid round(radius_mm / (dx*1000)); cx round(Nx/2); cy round(Ny/2); wood_mask makeDisc(Nx, Ny, cx, cy, radius_grid); % 孔洞掩膜 figure; imagesc(wood_mask); colormap(gray); %% 3. 介质属性定义 % 1. 创建声速矩阵 medium.sound_speed_compression zeros(Nx, Ny); medium.sound_speed_shear zeros(Nx, Ny); % 2. 创建密度矩阵 medium.density zeros(Nx, Ny); % 给 木柱区域 赋值杉木参数各向同性 medium.sound_speed_compression(wood_mask 0) 3200; % 杉木纵波声速 [m/s] medium.sound_speed_shear(wood_mask 0) 1800; % 杉木横波声速 medium.density(wood_mask 0) 500; % 杉木密度 [kg/m?] % 给 背景区域 赋值空气 medium.sound_speed_compression(wood_mask 1) 343; % 空气声速 medium.sound_speed_shear(wood_mask 1) 0; medium.density(wood_mask 1) 1.21; % 空气密度 %% 4. 时间数组 kgrid.makeTime(medium.sound_speed_compression); %% 5. 定义声源 source.u_mask zeros(Nx, Ny); source.u_mask(1, 150) 1; %这其实是个线声源 figure; imagesc(source.u_mask); colormap(gray); f0 100e3; source.uy toneBurst(1/kgrid.dt, f0, 2); %% 6. 传感器 sensor.mask zeros(Nx, Ny); sensor.mask(250, 100:50:250) 1; %设置了四个接收点 sensor.record {u}; figure; imagesc(sensor.mask); colormap(gray); %% 7. 运行弹性波仿真 sensor_data pstdElastic2D(kgrid, medium, source, sensor); %% 8. 画图画 uy 分量 plot(kgrid.t_array, sensor_data.uy); xlabel(时间 (s)); ylabel(质点振动); title(2D 弹性固体木材超声信号); grid on; legend3. 运行结果初始波场结束波场

更多文章