查看: 97|回复: 0|关注: 0

[已答复] 利用基于matlab的Field II 工具计算出声压值,不知如何显示。直接显示如图,得不到想要的效果。

[复制链接]

新手

5 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
发表于 5 天前 | 显示全部楼层 |阅读模式
    小弟,我利用matlab的Field II工具做超声相控阵声场聚焦模拟,得出声压值fp(z,x)后不值怎么显示。如果直接显示如图,得不到想要的效果。查阅资料后,需要矩阵进行对数压缩。但是,我还是有点蒙。希望,大佬们给点建议。我该去看什么样的书?图像处理的书吗?fp(z,x)是一个100*100的矩阵

path(path,'D:\MATLAB\toolbox\field_ii');
field_init;//Field II初始化

%% 参数设置
f0=2.5e6;%换能器中心频率
T0=1/f0;
fs=100e6;%采样频率
c=1540;%声速
lambda=c/f0;%波长
height=1/1000;%height of element y轴方向
width=(0.32-0.05)/1000;%width of element x轴方向
kerf=0.05/1000;%阵元间距
N_elements=64;
focus=[0 0 70]/1000;%初始电子聚焦
focal_depth=focus(3);%焦点深度
T=0:1/fs:2/f0;
%% 换能器设置
set_sampling(fs);
  Th=xdc_linear_array(N_elements,width,height,kerf,1,1,focus); % 2 在x轴方向上的细分数量 %3在y轴上的细分数量
    channel_pos_tmp=xdc_get(Th,'rect');
      channel_pos =channel_pos_tmp(8,:);   
  %%设置阵元的脉冲响应与激励
  %impulse_response=exp(-((T-2*T0)/(T0/2)).^2).*sin(2*pi*f0*T);
    impulse_response=cos(2*pi*f0*T);
  impulse_response=impulse_response.*hamming(max(size(impulse_response)))';
  xdc_impulse( Th,impulse_response);
   excitation=cos(2*pi*f0*(0:1/fs:1/f0));
  %excitation=exp(-((T-2*T0)/(T0/2)).^2).*sin(2*pi*f0*T);

   xdc_excitation(Th,excitation);
  %所有通道幅度为1,不采用变迹
  t=ones(1,64);
  xdc_apodization(Th,0,t);
  SL=91;%相控阵扫描线
  in_num=46;%以垂直方向即中间扫描线为例
  d_th=2*sin(45/180*pi)/(SL-1);%相控阵扫描线夹角正弦值相等
  sin_th=sin(-45/180*pi)+(in_num-1)*d_th;
  th=asin(sin_th);
  focus_pt=[focal_depth*sin(20*pi/180) 0 focal_depth*cos(20*pi/180)];
  delay_tx=-1*(sqrt((channel_pos-focus_pt(1)).^2+focus_pt(3)^2)-focal_depth)/c;

  toff_c=delay_tx;
  xdc_times_focus(Th,0,(toff_c));
  fp=zeros(100,100);
  for x=1:100
   for z=1:100
    [hp,start_time]=calc_hp(Th,[(x-50)*1/1000,0,(z)*1/1000;]);
      %[hp,start_time]=calc_hp(Th,[(z)*1/1000,0,(x-50)*1/1000;]);
   % H=hp';
    %fp(x,z)=max(H(1,:));
     fp(z,x)=max(hp(:,1));
   end
  end


捕获1.PNG
回复主题 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表