field ii:一些查看技巧

一、换能器定义参考:

在这里插入图片描述
图片参考:Field II 超声声场仿真(1): 发射声场(原理&代码)
在这里插入图片描述

二、换能器位置:

通过show_xdc函数,可以查看换能器位置与样子(用户手册P32):

% Show the transducer surface in a surface plot
%
% Calling: show_xdc(Th)
%
% Argument: Th - Transducer handle
%
% Return: Plot of the transducer surface on the current figure
%
% Bote this version onlys shows the defined rectangles
%
% Version 1.1, June 29, 1998, JAJ
function res = show_xdc (Th)
% Do it for the rectangular elements
colormap(cool(128));
data = xdc_get(Th,’rect’);
[N,M]=size(data);
% Do the actual display
for i=1:M
x=[data(11,i), data(20,i); data(14,i), data(17,i)]*1000;
y=[data(12,i), data(21,i); data(15,i), data(18,i)]*1000;
z=[data(13,i), data(22,i); data(16,i), data(19,i)]*1000;
c=data(5,i)*ones(2,2);
hold on
surf(x,y,z,c)
end
% Put som axis legends on
Hc = colorbar;
view(3)
xlabel(’x [mm])
ylabel(’y [mm])
zlabel(’z [mm])
grid
axis(’image’)
hold off

使用:

 figure
 show_xdc(xmit_aperture);

64阵元线阵

三、声场仿真:

使用的帮帮验证一下对不对哇,另外想问一下我对三个仿真的理解对不对,所生成的结果是我备注的三个名字么?

function [env,env1]=sf_sim(Th,Rh)
%声场仿真 
%   输入发射和接收
%   此处显示详细说明

%显示范围
show_width = 40;%[mm]
show_depth = 100;%[mm]

env = zeros(show_depth*10,show_width*10);%回波声场
env1 = zeros(show_depth*10,show_width*10);%发射声场
env2 = zeros(show_depth*10,show_width*10);%孔径脉冲响应

%对每个点计算声场,比例为0.1 mm
for z = 1:show_width*10
 z
    for y = 1:show_depth*10

[hhp,tstart_hhp] = calc_hhp(Th,Rh,[(-show_width/2+(z)/10)/1000,0, y/10000]);%回波声场
[hp,tstart_hp] = calc_hp(Th,[(-show_width/2+(z)/10)/1000,0, y/10000]); %发射声场
[hp_th,tstart_hp_th] = calc_h(Rh,[(-show_width/2+(z)/10)/1000,0, y/10000]); %孔径脉冲响应

env(y,z) = env(y,z)+max(hhp(:,1));
env1(y,z) = env1(y,z)+max(hp(:,1));
env2(y,z) = env2(y,z)+max(hp_th(:,1));
    end
end

%声场显示
% %level = 255;%灰度级

//%%%%20230404注:这里是错的
% env=env/max(max(env));
% %env=log(env+0.1);
% env=log(env);
% env=env-min(min(env));
% env=level*env/max(max(env));
% 
% env1=env1/max(max(env1));
% %env1=log(env1+0.1);
% env1=log(env1);
% env1=env1-min(min(env1));
% env1=level*env1/max(max(env1));
% 
% env2=env2/max(max(env2));
% env2=log(env2);
% env2=env2-min(min(env2));
% env2=level*env2/max(max(env2));
//20230404更正:类似这种写法
    env1=env1;
    env1=10*log10(env1)
    env1(isnan(env1)) = min(min(env1)); %这句可能有点问题
    env1=env1-max(max(env1));
% 
% figure;
% colormap jet;
% image(-show_width/2:1:show_width/2,0:1/1000:show_depth/1,real(env),'CDataMapping','scaled');
% colorbar
% title('回波声场'% figure;
% colormap jet;
% image(-show_width/2:1:show_width/2,0:1/1000:show_depth/1,real(env1),'CDataMapping','scaled');
% colorbar
% title('发射声场'% figure;
% colormap jet;
% image(-show_width/2:1:show_width/2,0:1/1000:show_depth/1,real(env2),'CDataMapping','scaled');
% colorbar
% title('孔径脉冲响应'%计算某个特别区域声压线
% %calc_h
% [h,tstart_h] = calc_h(Th,[z_focus*sin(theta),0,z_focus*cos(theta)]);
% figure
% plot(h);
end


四、仿体查看方法

function showphantom(phantom_positions,phantom_amplitudes)
%SHOWPHANTOM 此处显示有关此函数的摘要
%   此处显示详细说明
x=phantom_positions(:,1);y=phantom_positions(:,2);z=phantom_positions(:,3);
v = phantom_amplitudes(:,1);
figure
colormap(jet)
scatter3(x,y,z,3,v)%散点图
colorbar
xlabel('X')
ylabel('Y')
zlabel('Z')
end

五、频率提取

参考了csdn一位大佬写的:回头找一下哈

function  showfft(mt)

fs = 40e6;
f0 = 2.5e6;
min_sample=0;
data=0;
PRF=1e3;
     
y = fft(mt(:,5)); 
%将横坐标转化,显示为频率f= n*(fs/N)
f = (0:length(y)-1)*fs/length(y);
% figure;
% plot(f,abs(y));
% title('Magnitude');
%该变换还会生成尖峰的镜像副本,该副本对应于信号的负频率。
%为了更好地以可视化方式呈现周期性,可以使用 fftshift 函数对变换执行以零为中心的循环平移。
n = length(mt(:,1));                         
fshift = (-n/2:n/2-1)*(fs/n);
yshift = fftshift(y);
% figure;
% plot(fshift,abs(yshift));
%FFT的结果所要展现的真实的频谱幅值[2]
realy=2*abs(y(1:n/2+1))/n;
realf=(0:n/2)*(fs/n);
figure;
plot(realf,realy);

end
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值