num=xlsread('C:\Users\GJC\Desktop\zhuang93 1500.xlsx');
ddd=num(:,1);
y1=num(:,2);y2=num(:,3);y3=num(:,4);y4=num(:,5);
y5=num(:,6);y6=num(:,7);y7=num(:,8);y8=num(:,9);
L=length(y1);
N = 2^nextpow2(L);
Fs=100000;T=1/Fs;t=(0:L-1)*T; %L=2048 Fs=25000频率范围比较恰当,但是结果不好
% T=L*10/1000;Fs=1/T;
f = Fs/N*(0:1:N-1); %频率(和采样频率不一样!!!!)
%f =2000+4*(0:N-1);
Y1 = fft(y1,N)/N*2;Y2 = fft(y2,N)/N*2;Y3 = fft(y3,N)/N*2;Y4 = fft(y4,N)/N*2;...
Y5 = fft(y5,N)/N*2;Y6 = fft(y6,N)/N*2;Y7 = fft(y7,N)/N*2;Y8 = fft(y8,N)/N*2;
A1 = abs(Y1); A2 = abs(Y2);A3 = abs(Y3);A4 = abs(Y4);A5 = abs(Y5);A6 = abs(Y6);A7 = abs(Y7);A8 = abs(Y8);
P1 = angle(Y1); P2 = angle(Y2);P3 = angle(Y3);P4 = angle(Y4);P5 = angle(Y5);P6 = angle(Y6);P7 = angle(Y7);P8 = angle(Y8);
szb =40:0.5:300;
num_szb=length(szb);
N = 2^nextpow2(L); %采样点数,采样点数越大,分辨的频率越精确,N>=L,超出的部分信号补为0
omega=2*pi*f;
z1=zeros(L,num_szb);z2=zeros(L,num_szb);z3=zeros(L,num_szb);
z4=zeros(L,num_szb);z5=zeros(L,num_szb);z6=zeros(L,num_szb);
z7=zeros(L,num_szb);z8=zeros(L,num_szb);
h1=diag(Y1');h2=diag(Y2');h3=diag(Y3');h4=diag(Y4');
h5=diag(Y5');h6=diag(Y6');h7=diag(Y7');h8=diag(Y8');
X1=zeros(L,num_szb);X2=zeros(L,num_szb);X3=zeros(L,num_szb);
X4=zeros(L,num_szb);X5=zeros(L,num_szb);X6=zeros(L,num_szb);
X7=zeros(L,num_szb);X8=zeros(L,num_szb);
X1ge=zeros(L,num_szb);X2ge=zeros(L,num_szb);X3ge=zeros(L,num_szb);
X4ge=zeros(L,num_szb);X5ge=zeros(L,num_szb);X6ge=zeros(L,num_szb);
X7ge=zeros(L,num_szb);X8ge=zeros(L,num_szb);
Fws=zeros(L,num_szb);rou=zeros(L,num_szb);
%%%%%%%%%%%%%%%%%%=======赋值========%%%%%%%%%%%%%%%%%%%%%l
for ka=1:L; %对每一个频率寻找最优的慢度
for kb = 1:num_szb;
z1(ka,kb)=exp(-i*omega(ka)*szb(kb)*(1-1)*0.5);z2(ka,kb)=exp(-i*omega(ka)*szb(kb)*(2-1)*0.5); %0.1524好像不行,这个间距
z3(ka,kb)=exp(-i*omega(ka)*szb(kb)*(3-1)*0.5);z4(ka,kb)=exp(-i*omega(ka)*szb(kb)*(4-1)*0.5);
z5(ka,kb)=exp(-i*omega(ka)*szb(kb)*(5-1)*0.5);z6(ka,kb)=exp(-i*omega(ka)*szb(kb)*(6-1)*0.5);
z7(ka,kb)=exp(-i*omega(ka)*szb(kb)*(7-1)*0.5);z8(ka,kb)=exp(-i*omega(ka)*szb(kb)*(8-1)*0.5);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%======各个接收器的频谱Xn======%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
X1(ka,kb)=h1(ka,ka);X2(ka,kb)=h2(ka,ka);X3(ka,kb)=h3(ka,ka);X4(ka,kb)=h4(ka,ka); %% 有问题,矩阵的维度不一样 将diag(A1')等从单行矩阵变为对角方阵 这里是否恰当
X5(ka,kb)=h5(ka,ka);X6(ka,kb)=h6(ka,ka);X7(ka,kb)=h7(ka,ka);X8(ka,kb)=h8(ka,ka); %%
X1ge(ka,kb)=conj(X1(ka,kb));X2ge(ka,kb)=conj(X2(ka,kb));X3ge(ka,kb)=conj(X3(ka,kb));X4ge(ka,kb)=conj(X4(ka,kb));
X5ge(ka,kb)=conj(X5(ka,kb));X6ge(ka,kb)=conj(X6(ka,kb));X7ge(ka,kb)=conj(X7(ka,kb));X8ge(ka,kb)=conj(X8(ka,kb));
rou(ka,kb)=abs(X1ge(ka,kb)*z1(ka,kb)+X2ge(ka,kb)*z2(ka,kb)+X3ge(ka,kb)*z3(ka,kb)+X4ge(ka,kb)*z4(ka,kb)...
+X5ge(ka,kb)*z5(ka,kb)*+X6ge(ka,kb)*z6(ka,kb)+X7ge(ka,kb)*z7(ka,kb)+X8ge(ka,kb)*z8(ka,kb))/...
(8*(X1(ka,kb)*X1ge(ka,kb)+X2(ka,kb)*X2ge(ka,kb)+X3(ka,kb)*X3ge(ka,kb)+X4(ka,kb)*X4ge(ka,kb)+X5(ka,kb)*X5ge(ka,kb)+X6(ka,kb)*X6ge(ka,kb)+...
X7(ka,kb)*X7ge(ka,kb)+X8(ka,kb)*X8ge(ka,kb)))^0.5;
%%%%%%%%%%%%%%%%%%%%%%%%找出慢度sk 这个循环还是有问题,要找到Fws的最大值,要使得声波慢度循环起来!
if (ka+2)<=L
if(ka-2)>=1
Fws(ka,kb)=exp(-(omega(ka)-omega(ka-2))/2*((omega(ka)-omega(ka-1))^2))* rou(ka-2,kb)+exp(-(omega(ka)-omega(ka-1))/2*((omega(ka)-omega(ka-1))^2))* rou(ka-1,kb)...
+exp(-(omega(ka)-omega(ka))/2*((omega(ka)-omega(ka-1))^2))* rou(ka,kb)+exp(-(omega(ka+1)-omega(ka))/2*((omega(ka)-omega(ka-1))^2))* rou(ka+1,kb)+exp(-(omega(ka+2)-omega(ka))/2*((omega(ka)-omega(ka-1))^2))* rou(ka+2,kb);
else
Fws(ka,kb) = 5*1*rou(ka, kb);
end
else
Fws(ka,kb)=5*1* rou(ka,kb);
end
end
end
[bigrou,index]=max(Fws,[],2);
snb=szb(index);
plot(f(1:N/2),snb(1:N/2),'o')