【高强度聚焦超声模拟器】模拟分层介质中的高强度聚焦超声波束和加热效应(Matlab代码)

news2024/11/23 17:25:30

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文章


💥1 概述

【高强度聚焦超声模拟器】模块是一种用于模拟分层介质中高强度聚焦超声波束和加热效应的工具。它由两个模块组成,分别是求解轴对称聚焦超声换能器压力分布的KZK方程模块和根据处理方案计算加热和热剂量的模块。

在第一个模块中,通过求解KZK方程,可以得到轴对称聚焦超声换能器在分层介质中的压力分布。这些计算结果被转储到Matlab工作区,并生成了相应的显著图。这些数据对于后续的处理非常有用。

第二个模块根据用户定义的处理方案,利用第一个模块得到的压力分布来计算加热和热剂量。通过考虑波束的衍射、干涉效应,以及吸收的幂律频率依赖性和相速度色散等因素,可以得到时间平均强度和加热速率。接着,将加热速率分布作为生物热传递(BHT)方程的源,通过积分来确定温度和热剂量场。这些结果可以用于进一步的研究和后处理。

为了保持软件的高效和轻量化,该模拟器对系统资源的要求较低,同时力求提供快速而准确的计算结果。它是研究高强度聚焦超声技术和其在生物医学领域中应用的有力工具。详细讲解见第4部分。

📚2 运行结果

这是一个模拟100瓦,1.5兆赫兹的高强度聚焦超声(HIFU)束在水中传播5厘米,然后在组织中传播3厘米到达聚焦点,然后继续传播8厘米的过程。在模拟运行时:运行结果如下:

function[z,r,H,I,Ppos,Pneg]=axisymmetricKZK()
% Driver for axisymmetric KZK integrator.  

% get system parameters:
[p0,c1,c2,rho1,rho2,N1,N2,G1,G2,gamma1,gamma2,a,b,d,f,R,Z,z_,K] = KZK_parameters();
K2 = 2*K;

% print coefficients to screen:
fprintf('\n\tp0 = %2.2f MPa\n',1e-6*p0)
fprintf('\tN1 = %1.2f\tN2 = %1.2f\n',N1,N2)
fprintf('\tG1 = %3.2f\tG2 = %3.2f\n\n',G1,G2)

F=0.5*d/a;
if(F<1.37)
  fprintf('\tWarning--f/%1.2f exceeds the conditions\n',F)
  fprintf('\tunder which KZK is derived (> f/1.37).\n\n')
end

% grid set-up:
[M,J,J_,dz,dr,z,r]=computational_grid(Z,R,max(G1,G2),a,d,gamma2(1),N2);

% dependent variables:
u = zeros(2*J,K);
w = zeros(2*J,K);
limit = 1/sqrt(1-(a/d)^2);
v = initial_condition(J,K,G1,r,b*limit/a,limit);
v(1:J,1) = v(1:J,1).*sqrt(1-(r/d).^2);
v(J+1:2*J,1) = v(J+1:2*J,1).*sqrt(1-(r/d).^2);

% set up discretization operators:
for k=1:K
  [A1(k).IRK1,A1(k).IRK2,A1(k).CN1,A1(k).CN2] ...
  = KZK_operators(r,R,G1,dz,dr,J,k,gamma1(k));
  [A2(k).IRK1,A2(k).IRK2,A2(k).CN1,A2(k).CN2] ...
  = KZK_operators(r,R,G2,dz,dr,J,k,gamma2(k));
end
k1 = zeros(2*J,1);	% IRK slope vectors
k2 = zeros(2*J,1);
b1 = 1/sqrt(2);		% IRK coefficients
b2 = 1 - b1;

% parameters for nonlinear integration:
mu1 = N1*K*dz/pi;		% nonlinear term integration parameters
mu2 = N2*K*dz/pi;
cutoff1 = gamma1(1)/10/N1;	% cutoffs for performing nonlinear integration
cutoff2 = gamma2(1)/10/N2;
X = zeros(1,K2);		% data vectors
Y = zeros(1,K2);
Xpeak = zeros(1,K2);

% for plotting routines:
H = zeros(J_,M);		% Heating rate matrix
H2 = zeros(J_,M);
H(:,1) = real(gamma1(1))*(v(1:J_,1).^2 + v(J+1:J+J_,1).^2);
I = zeros(J_,M);
I(:,1) = v(1:J_,1).^2 + v(J+1:J+J_,1).^2;

function[z,r,H,I,Ppos,Pneg]=axisymmetricKZK()
% Driver for axisymmetric KZK integrator.  

% get system parameters:
[p0,c1,c2,rho1,rho2,N1,N2,G1,G2,gamma1,gamma2,a,b,d,f,R,Z,z_,K] = KZK_parameters();
K2 = 2*K;

% print coefficients to screen:
fprintf('\n\tp0 = %2.2f MPa\n',1e-6*p0)
fprintf('\tN1 = %1.2f\tN2 = %1.2f\n',N1,N2)
fprintf('\tG1 = %3.2f\tG2 = %3.2f\n\n',G1,G2)

F=0.5*d/a;
if(F<1.37)
  fprintf('\tWarning--f/%1.2f exceeds the conditions\n',F)
  fprintf('\tunder which KZK is derived (> f/1.37).\n\n')
end

% grid set-up:
[M,J,J_,dz,dr,z,r]=computational_grid(Z,R,max(G1,G2),a,d,gamma2(1),N2);

% dependent variables:
u = zeros(2*J,K);
w = zeros(2*J,K);
limit = 1/sqrt(1-(a/d)^2);
v = initial_condition(J,K,G1,r,b*limit/a,limit);
v(1:J,1) = v(1:J,1).*sqrt(1-(r/d).^2);
v(J+1:2*J,1) = v(J+1:2*J,1).*sqrt(1-(r/d).^2);

% set up discretization operators:
for k=1:K
  [A1(k).IRK1,A1(k).IRK2,A1(k).CN1,A1(k).CN2] ...
  = KZK_operators(r,R,G1,dz,dr,J,k,gamma1(k));
  [A2(k).IRK1,A2(k).IRK2,A2(k).CN1,A2(k).CN2] ...
  = KZK_operators(r,R,G2,dz,dr,J,k,gamma2(k));
end
k1 = zeros(2*J,1);    % IRK slope vectors
k2 = zeros(2*J,1);
b1 = 1/sqrt(2);        % IRK coefficients
b2 = 1 - b1;

% parameters for nonlinear integration:
mu1 = N1*K*dz/pi;        % nonlinear term integration parameters
mu2 = N2*K*dz/pi;
cutoff1 = gamma1(1)/10/N1;    % cutoffs for performing nonlinear integration
cutoff2 = gamma2(1)/10/N2;
X = zeros(1,K2);        % data vectors
Y = zeros(1,K2);
Xpeak = zeros(1,K2);

% for plotting routines:
H = zeros(J_,M);        % Heating rate matrix
H2 = zeros(J_,M);
H(:,1) = real(gamma1(1))*(v(1:J_,1).^2 + v(J+1:J+J_,1).^2);
I = zeros(J_,M);
I(:,1) = v(1:J_,1).^2 + v(J+1:J+J_,1).^2;

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码、数据、文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1057448.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

调用gethostbyname实现域名解析(附源码)

VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&#xff09;https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到精通系列教程&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&a…

手机建模教程 | 如何从易模App中导出模型?有哪些格式?含贴图吗?

很多小伙伴使用易模App是为了能快速地将已有实物的物体“变成”三维模型后转到自己习惯的3D软件中去编辑&#xff0c;于是&#xff0c;大家都关心模型能否导出&#xff0c;以及导出格式有没有自己想要的&#xff1f; 博雅仔告诉大家&#xff0c;当然可以导出&#xff01; 在导出…

阶乘分解质因数

n!中因子p的个数为 枚举n范围内的质数即可 #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing namespace std;typedef pair<int, int> PII; typedef long long ll; typedef long double ld;const int N …

手机自动直播系统源码交付与代理加盟注意事项解析!

随着直播行业的不断发展&#xff0c;手机自动直播已经成为了人们生活中不可或缺的一部分。手机无人直播软件成了香饽饽&#xff0c;各类手机实景直播APP大批量涌现。因为创业和技术门槛低&#xff0c;市场需求高&#xff0c;所以成了最火热创业赛道。那么如果是不懂技术的人群&…

【DRAM存储器九】SDRAM介绍-read、write、Precharge、DQM、Power down、Clock Suspend命令

&#x1f449;个人主页&#xff1a;highman110 &#x1f449;作者简介&#xff1a;一名硬件工程师&#xff0c;持续学习&#xff0c;不断记录&#xff0c;保持思考&#xff0c;输出干货内容 参考资料&#xff1a;《镁光SDRAM数据手册》、《PC SDRAM specification》 目录…

vue中 css scoped原理

Vue中css的逻辑是先放子组件&#xff0c;然后放父组件&#xff0c;所以同样的css类名&#xff0c;子组件会被父组件覆盖 html 如下 子被父覆盖 scoped是通过给组件加hash值&#xff0c;锁定组件。 父子组件均scoped的情况下&#xff0c;子仍会覆盖 还是被覆盖了 如何避免被…

1004. 最大连续1的个数III(滑动窗口)

一、题目 1004. 最大连续1的个数 III - 力扣&#xff08;LeetCode&#xff09; 二、代码 class Solution { public:int longestOnes(vector<int>& nums, int k) {int mark0;//标记0的个数int MaxLength0;for(int left0,right0;right<nums.size();right){if(nums…

串口数据包收发

数据包 把属于同一批的数据进行打包和分割&#xff0c;方便接收方进行识别 HEX数据包 思路&#xff1a;一个数据规定四个字节&#xff0c;以0xFF为包头&#xff0c;0xFE为包尾&#xff0c;当检测到0xFF时&#xff0c;接下来四个数据就是数据&#xff0c;接收到0xFE时&#x…

计算机视觉——飞桨深度学习实战-图像分类算法原理与实战

基础理论&#xff1a; 图像分类是深度学习在视觉领域第一个取得突破性成果的任务。本章首先介绍了图像分类任务的发展历程与评价指标。然后分为三个角度分别介绍了在图像分类领域具有重要地位的三种模型。第一种是基于残差网络的模型&#xff0c;本章重点介绍了ResNet、DenseN…

PCB铺铜连接方式

在铺铜前先把栅格吸附关闭铺铜会流畅很多 在嘉立创专业版中&#xff0c;默认铺铜方式是这样 改变铺铜规则为直连 效果如下

基于SpringBoot的补习班线上报名系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

【小尘送书-第六期】《巧用ChatGPT轻松玩转新媒体运营》AI赋能运营全流程,帮你弯道超车、轻松攀登运营之巅

大家好&#xff0c;我是小尘&#xff0c;欢迎你的关注&#xff01;大家可以一起交流学习&#xff01;欢迎大家在CSDN后台私信我&#xff01;一起讨论学习&#xff0c;讨论如何找到满意的工作&#xff01; &#x1f468;‍&#x1f4bb;博主主页&#xff1a;小尘要自信 &#x1…

开发中的前端和后端

一、引言 前端和后端是Web开发中两个不同的领域。 前端开发主要负责实现用户界面的设计和功能&#xff0c;包括网页的布局、样式和交互效果。前端开发使用HTML、CSS和JavaScript等技术来构建用户在浏览器中直接与之交互的界面。前端开发人员需要关注网页的可视化效果和用户体验…

【密评】商用密码应用安全性评估从业人员考核题库(三)

商用密码应用安全性评估从业人员考核题库&#xff08;三&#xff09; 国密局给的参考题库5000道只是基础题&#xff0c;后续更新完5000还会继续更其他高质量题库&#xff0c;持续学习&#xff0c;共同进步。 501 多项选择题 《个人信息保护法》要求个人信息处理者应当采取哪些…

[C语言经典100例题-67】(指针解决)输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组

代码 下面是使用指针解决的代码示例&#xff1a; #include <stdio.h>void swap(int *a, int *b) {int temp *a;*a *b;*b temp; }int main() {int arr[100], n, max_index 0, min_index 0;printf("Enter the size of the array: ");scanf("%d"…

堆优化迪氏最短单源路径原理及C++实现

时间复杂度 O(ElogE)&#xff0c;E是边数。适用与稀疏图。 使用前提 边的权为正。可以非连通&#xff0c;非连通的距离为-1。 原理 优选队列&#xff08;小根堆&#xff09;记录两个数据&#xff1a;当前点到源点距离&#xff0c;当前点。先处理距离小的点&#xff1b;如果…

数据在内存中的存储(一个新手的理解)

1.整数在内存中的存储 正整数的原&#xff0c;补&#xff0c;反码都相同。 负整数的三种表示方法各不相同。 提示&#xff1a;负数的反码等于原码符号位不变&#xff0c;其他位置的二进制位取反。 负数的补码等于反码1. 对于整型来说&#xff1a;数据存放在内存中其实存放的是…

【软件测试】自动化测试selenium(一)

文章目录 一. 什么是自动化测试二. Selenium的介绍1. Selenium是什么2. Selenium的特点3. Selenium的工作原理4. SeleniumJava的环境搭建 一. 什么是自动化测试 自动化测试是指使用软件工具或脚本来执行测试任务的过程&#xff0c;以替代人工进行重复性、繁琐或耗时的测试活动…

C++(List)

本节目标&#xff1a; 1.list介绍及使用 2.list深度剖析及模拟实现 3.list和vector对比 1.list介绍及使用 1.1list介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向链表结构&#xff0c;…

[React] react-redux基本使用

文章目录 1.redux2.安装redux3.操作redux3.1 创建最为核心的store3.2 创建为store工作的reducer3.3 redux的响应式处理 4.完整版redux4.1 完善actionCreators4.2 thunk中间件 5.react-redux5.1 Count容器组件5.2 connect函数5.3 Provider 1.redux redux原理图 actionCreators:…