问题补充说明:(1)m=m(:).';x=x(:).';nlayers=length(x);这三句什么意思?(2)另,关于,x,m的取值问题,x是与半径r相关的参数,应该是标量的,下面是输入的r值,这个取值是什么含义(是向量还是... (1)m = m(:).';x = x(:).';nlayers = length(x);这三句什么意思?(2)另,关于,x,m的取值问题,x是与半径r相关的参数,应该是 标量的,下面是输入的r值,这个取值是什么含义(是向量还是复数),如何取r=0.5之类,r=[1.0 1.1];x=k*r;m是相对折射率,可能是复数m=mo+m'i,同上,下面取值的含义m=[1.1 1.3]最下面附m,x相关,可能用到(3)另外P(n,:)T(n,:)是什么意思?function [a_n,b_n] = nlayerScaCoeff(m,x,nmax,nlayers)m = m(:).';x = x(:).';nlayers = length(x);if length(x)==1 x = x*ones(size(m));endif length(m)>1 && length(x)~=length(m) error('Dimensions of x & m must be the same or scalar')endN = ((1:nmax).')*ones(1,length(x));% Ricatti-Bessel functionspsi = RB1(x, nmax);psim = RB1(m.*x, nmax);略endcorrectkappan_1 = [0, -cos(m(2:nlayers).*x(1:(nlayers-1)))];kappamKplus1n_1 = [correctkappan_1;kappamKplus1(1:(nmax-1),:)]; % (n-1) terms% Hankel functionxi = psi - i * kappa;% Ricatti-Bessel function for variable m(k+1)*x(k) of k number of layers, for (n-1) terms in serieskappan_1 = [-cos(x);kappa(1:(nmax-1),:)];kappamn_1 = [-cos(m.*x);kappam(1:(nmax-1),:)];% correction to avoid error in matrix/array dimensionsif length(m)>1 mm = ones(nmax,1)*m;endif length(x)>1 xx = ones(nmax,1)*x;end略 展开
m=m(:).';%m数组等于输入的m(:)数殖缺构英绿优组的共轭转置;x=x(:).';同上;nlayers=len360问答gth(x);%nlayers等于x数组的长度,即x数组元素的个数;
r=[1.01.1];%r数组中有两个元素1.0和1.1,要取0.5则变为r=[1.00.51.1];这样r可取三个值1.0,0.5和1.1。m=[1.11.3]%m数组中有两个元素1.1和1.3,这个语句不可能表示复数,除非是复数的实部和虚部,那么还需要其它语句,这状垂侵防联跟克个语句就是表示m数组有两个实数值元素分别为1.1和1.3。
P(n,:)和T(n,:)分别表示数组P和T的第n行所有列上的元素,说白了就是它们第n行的数够片后改据,你可以理解为两个取了数组P和T第n行的向量。
标签:matlab,length