k-Wave 工具箱学习-2定义计算网格

3.2 定义计算网格

第一个输入 kgrid 定义计算网格的属性。这决定了如何将连续介质划分为均匀分布的网格点。一维、二维、三维网格定义代码示例如下:

kgrid = kWaveGrid(Nx, dx);
kgrid = kWaveGrid(Nx, dx, Ny, dy);
kgrid = kWaveGrid(Nx, dx, Ny, dy, Nz, dz);
x_size = Nx*dx; % x_size为实际x方向长度,单位为米

其中,Nx为网格点数,dx为网格大小(建议dx = dy = dz)。matlab没有单位,k-Wave单位大多为国际单位。

生成后的kgrid结构体包含函数使用的属性,如下所示(属性以k开头的基本不用理解)

kgrid.k

标量波数的格子 ND 网格(不太用理解)

kgrid.k_max

网格支持的最大空间频率

kgrid.t_array

等间隔的时间值数组(即时间步,时域)

kgrid.Nt

时间步数

kgrid.dt

时间步长

kgrid.dim

空间维度数(1、2或3)

kgrid.total_grid_points

网格点的总数

kgrid.Nx

x方向网格点数

kgrid.dx

x方向网格点间距[m]

kgrid.x

x坐标以0 为中心的格子ND网格 [m]

kgrid.x_vec

x坐标的一维向量 [m]

kgrid.x_size

x方向上的实际总长度 [m]

kgrid.kx

x方向波数的平铺ND网格

kgrid.kx_vec

x方向波数的一维矢量

kgrid.kx_max

x方向的最大空间频率

网格数量和网格大小的确定

创建新的模拟时,需确定Nx和dx。

dx越小越精确,计算量越大,求dx的公式如下

% 根据所需的x_size和f_max计算dx和Nx

points_per_wavelength = 3;

dx = c0_min/(points_per_wavelength*f_max);

Nx = round(x_size/dx);

这里,c0_min是介质中的最小声速(声速越小,dx越小,越精确),f_max是最大频率(频率越大,dx越小,越精确),points_per_wavelength每个超声波长的期望网格点数。对于均匀介质中的线性模拟,可以使用接近奈奎斯特限制的每波长两点(建议每波长至少三点以使PML有效工作)来运行模拟。但是,对于非均匀介质,则建议每个波长使用四个或更多点数。对于非线性仿真,最大频率应设置为具有大量能量的最高谐波的频率。

k-Wave 中使用的空间梯度计算大量使用快速傅立叶变换 (FFT)。根据模拟的复杂性,每个时间步最多计算 14 个 FFT。通过将每个方向(包括 PML)上的网格点总数选择为 2 的幂具有较小的质因数的数,可以最大限度地减少计算每个 FFT 的时间。应避免使用大素数(例如 149)的网格总数。在许多情况下,可以通过稍微修改 kgrid.Nx、kgrid.Ny 等的值以使最大素因子变小来提高 k-Wave 的性能。可以使用函数 checkFactors 获得为任何给定范围选择的适当值。这将返回指定范围内最大质因数为 7 或更少的数字。

checkFactors(100, 150) % 寻找 100 到 150 之间合适网格数量的示例

% 输出结果展示
Numbers with a maximum prime factor of 2
128
Numbers with a maximum prime factor of 3
108 144
Numbers with a maximum prime factor of 5
100 120 125 135 150
Numbers with a maximum prime factor of 7
105 112 126 140 147


Nx = 128; %选择2的幂

完美匹配层(PML)

当声波到达计算域的边缘时,它们被一种特殊类型的各向异性吸收边界层吸收,称为完美匹配层或 PML。可以通过运行工具箱中包含的示例观察传播波接近计算域边缘时会发生什么,可以看到该层的效果。默认情况下,PML 占据域边缘周围的 20 个网格点(3D 中为 10 个网格点)。值得注意的是,PML 放置在使用 makeGrid 指定的网格大小内。

这意味着用户必须小心,不要将源或传感器点放置在该层内。

或者,通过将可选输入参数“PMLInside”设置为 false,可以将 PML 设置为用户定义的网格大小之外(有关如何使用可选输入参数的概述,请参阅第 3.6 节)。在这种情况下,网格大小和介质输入会在模拟开始之前自动放大。(我也不填明白,没用过)

创建时间步的方法。包括时间步数量和大小

创建 kgrid 对象后,用户可以修改的唯一参数是 kgrid.t_array。这描述了运行模拟的时间值数组,默认设置为“自动”。在这种情况下,时间数组是使用 makeTime 在模拟函数中自动计算的。此函数将总时间设置为声波以最小声速穿过最长网格对角线所需的时间。时间步长基于 0.3 的 Courant-Friedrichs-Lewy (CFL) 数和介质中的最大声速,其中 kgrid.dt = CFL*dx_min/c0_max(请参阅第 2.7 节中的讨论)。还可以通过调用 makeTime 显式设置时间数组来手动设置时间数组。下面给出几个例子。时间数组必须均匀分布且单调递增。创建后,可以使用kgrid.Nt和kgrid.dt查询时间点的数量和时间步的大小。

% 使用 makeTime 创建时间数组,设置 CFL 和结束时间

kgrid.t_array = makeTime(kgrid, medium.sound_speed, CFL, t_end);

% 使用 makeTime 创建时间数组并设置结束时间

kgrid.t_array = makeTime(kgrid, medium.sound_speed, [], t_end);

% 显式创建时间数组

kgrid.t_array = 0:1e-9:1e-6;

 References

[1] B. E. Treeby and B. T. Cox, "k-Wave: MATLAB toolbox for the simulation and reconstruction of photoacoustic wave-fields," J. Biomed. Opt., vol. 15, no. 2, p. 021314, 2010. download pdf

[2] B. E. Treeby, J. Jaros, A. P. Rendell, and B. T. Cox, "Modeling nonlinear ultrasound propagation in heterogeneous media with power law absorption using a k-space pseudospectral method," J. Acoust. Soc. Am., vol. 131, no. 6, pp. 4324-4336, 2012. download pdf

[3] B. E. Treeby and B. T. Cox, "Modeling power law absorption and dispersion for acoustic propagation using the fractional Laplacian," J. Acoust. Soc. Am., vol. 127, no. 5, pp. 2741-2748, 2010. download pdf (see also erratum)

1 2/3维图像分割工具箱 2 PSORT粒子群优化工具箱 3 matlab计量工具箱Lesage 4 MatCont7p1 5 matlab模糊逻辑工具箱函数 6 医学图像处理工具箱 7 人工蜂群工具箱 8 MPT3安装包 9 drEEM toolbox 10 DOMFluor Toolbox v1.7 11 Matlab数学建模工具箱 12 马尔可夫决策过程(MDP)工具箱MDPtoolbox 13 国立SVM工具箱 14 模式识别与机器学习工具箱 15 ttsbox1.1语音合成工具箱 16 分数阶傅里叶变换的程序FRFT 17 魔方模拟器与规划求解 18 隐马尔可夫模型工具箱 HMM 19 图理论工具箱GrTheory 20 自由曲线拟合工具箱ezyfit 21 分形维数计算工具箱FracLab 2.2 22 For-Each 23 PlotPub 24 Sheffield大学最新遗传算法工具箱 25 Camera Calibration 像机标定工具箱 26 Qhull(二维三维三角分解、泰森图)凸包工具箱 2019版 27 jplv7 28 MatlabFns 29 张量工具箱Tensor Toolbox 30 海洋要素计算工具箱seawater 31 地图工具箱m_map 32 othercolor配色工具包 33 Matlab数学建模工具箱 34 元胞自动机 35 量子波函数演示工具箱 36 图像局域特征匹配工具箱 37 图像分割graphcut工具箱 38 NSGA-II工具箱 39 chinamap中国地图数据工具箱(大陆地区) 40 2D GaussFit高斯拟合工具箱 41 dijkstra最小成本路径算法 42 多维数据快速矩阵乘法 43 约束粒子群优化算法 44 脑MRI肿瘤的检测与分类 45 Matlab数值分析算法程序 46 matlab车牌识别完整程序 47 机器人工具箱robot-10.3.1 48 cvx凸优化处理工具箱 49 hctsa时间序列分析工具箱 50 神经科学工具箱Psychtoolbox-3-PTB 51 地震数据处理工具CREWES1990版 52 经济最优化工具箱CompEcon 53 基于约束的重构分析工具箱Cobratoolbox 54 Schwarz-Christoffel Toolbox 55 Gibbs-SeaWater (GSW)海洋学工具箱 56 光声仿真工具箱K-Wave-toolbox-1.2.1 57 语音处理工具箱Sap-Voicebox 58 贝叶斯网工具箱Bayes Net Toolbox(BNT) 59 计算机视觉工具箱VFfeat-0.9.21 60 全向相机校准工具箱OCamCalib_v3.0 61 心理物理学数据分析工具箱Palamedes1_10_3 62 生理学研究工具箱EEGLAB 63 磁共振成像处理工具箱CONN 18b 64 matlab 复杂网络工具箱 65 聚类分析工具箱FuzzyClusteringToolbox 66 遗传规划matlab工具箱 67 粒子群优化工具箱 68 数字图像处理工具箱DIPUM Toolbax V1.1.3 69 遗传算法工具箱 70 鱼群算法工具箱OptimizedAFSAr 71 蚁群算法工具箱 72 matlab优化工具箱 73 数据包络分析工具箱 74 图像分割质量评估工具包 75 相关向量机工具箱 76 音频处理工具箱 77 nurbs工具箱 78 Nurbs-surface工具箱 79 grabit数据提取工具箱 80 量子信息工具箱QLib 81 DYNAMO工具箱 82 NEDC循环的整车油耗量 83 PlotHub工具箱 84 MvCAT_Ver02.01 85 Regularization Tools Version 4.1 86 MatrixVB 4.5(含注册) 87 空间几何工具箱 matGeom-1.2.2 88 大数计算工具箱 VariablePrecisionIntegers 89 晶体织构分析工具包 mtex-5.7.0 90 Minimal Paths 2工具箱 91 Matlab数学建模工具箱
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值