clear all close all eps = 0.00001;
%这里普及一下eps的概念
<span>%eps是一个函数。当没有参数时默认参数是1.返回的是该参数的精度。 %也就是说单个的eps实际上是eps(1),表示的是1的精度。 %这里要说一下精度的概念。浮点数所能表示的数值范围是很大的,但是浮点数不是无限的,连续的和稠密的;</span>
<span>&而是有限的,离散的和稀疏的,而且每个数的精度都不一样。越是靠近0,精度越高,反之则越低。</span>
<span>%eps返回的是1的精度。指的是1和离他最近的浮点数之间的距离。 %我们输入eps可以看到1的精度。 %也就是说离他最近的浮点数和他相差eps(1)。我们可以计算1+eps,他就是离1最近的浮点数。 %如果我们计算出的数介于这两者之间,系统就会自动把它舍入到离他最近的数。</span>
<span>1+eps*3/5离1+eps近,</span><span>所以1+eps*3/5≈1+eps;</span>
<span>1+eps*2/5离1近,所以1+eps*2/5≈1,而1+eps/2在正当中,系统自动把它舍入到1,即1+eps/2≈1 %如果我们输入eps(2)可以看到2的精度,它只有1的精度的一半。即eps(2)=eps*2 %因此系统会认为2+eps≈2,而2+eps*6/5≈2+eps*2=2+eps(2)</span> k = 2*pi;%周期函数周期 theta = -pi : pi / 10791 : pi;%设定范围大小 var = sin(theta);
%Matlab 函数var定义:均方差; Matlab 函数var功能:var函数实际上求的并不是方差,而是误差理论中“有限次测量数据的标准偏差的估计值”; Matlab 函数var应用: X=[1,2,3,4] var(X)=1.6667 nelements = 8;%元素个数 d = 1; % d = 1; num = sin((nelements * k * d * 0.5) .* var); if(abs(num) <= eps) num = eps; end den = sin((k* d * 0.5) .* var); if(abs(den) <= eps) den = eps; end pattern = abs(num ./ den); maxval = max(pattern); pattern = pattern ./ maxval; figure(1)%阵列方向图 theta = theta +pi/2;%留下小思索,自己想想为什么要加pi/2 polar(theta,pattern) title ('阵列方向图') figure(2)%功率方向图 polardb(theta,pattern) title ('功率方向图')
使用相控阵探头会产生的一个现象是会生成不希望出现的栅瓣和旁瓣。
出现栅瓣和旁瓣这两个紧密相关的现象是由于探头发出的部分声能以不同于主声程的角度传播造成的。
这种现象不仅限于相控阵系统,在使用常规探头时,随着晶片大小的增加也会出现旁瓣现象。
这些不希望出现的声波会从被测工件的表面反射,并会使图像中出现虚假缺陷指示。
晶片间距、晶片数量、频率和带宽都会对栅瓣的波幅有很大的影响。
下面的声束图比较了两种声束形状:
在探头孔径近似的情况下,左图中的声束由间距为0.4毫米的6个晶片生成,右图中的声束由间距为1毫米的3个晶片生成。
左侧图中的声束形状类似锥形;右侧图中的声束在其中心轴两侧约30度方向上生出两个多余的波瓣。
只要阵列中单个晶片的尺寸等于或大于波长,就会产生栅瓣。
当晶片尺寸小于波长的一半时,不会产生栅瓣。(晶片尺寸在半个波长和一个波长之间时,是否产生栅瓣取决于电子偏转的角度。)
因此在某项具体应用中使栅瓣最小化的最简单的方法是使用小晶片间距的探头。
使用特别设计的探头,如:将大晶片分割为较小的晶片,或改变晶片间距,也可以减少不需要的波瓣。