%相关度
%x = zeros(1,6);
%y = zeros(1,6);
%x(1) = -8808-2521j;
%x(2) = -14799+10849j;
%x(3) = 9672-4471j;
%x(4) = -2677+15829j;
%x(5) = -7185+9598j;
%x(6) = -6727+1038j;
%
%y(1) = -1777+11986j;
%y(2) = 16644+21103j;
%y(3) = -8291-15049j;
%y(4) = 21157+3183j;
%y(5) = 15201+7237j;
%y(6) = -1450+8551j;
%
%z=y*x';
%
%norm(z)/(norm(x)*norm(y))
clear all;
close all;
%CAPON & CONVENTIONAL BEAMFORMING
ant_shift = [ -3440-2650j, -6652-4279j, 6405+5887j, -7863-224j, -5951+722j, 2633-174j];
alpha = 1 / norm(ant_shift(1));
ang_st = -25;
ang_end = 25;
ang_res = 1;
vec_size = (ang_end-ang_st+1)/ang_res;
ant_chnanels = 6;
vec_buf = zeros(vec_size,ant_chnanels);
RSP_DOA_PIOVER180 = pi/180;
lambda_factor = 3;
for i = 1 : vec_size
ftemp1 = sin((ang_st + ((i-1) * ang_res)) * RSP_DOA_PIOVER180);
freal1 = cos(lambda_factor * pi * ftemp1);
fimag1 = sin(lambda_factor * pi * ftemp1);
frealj = freal1;
fimagj = fimag1;
vec_buf(i,1) = real(ant_shift(1)) * alpha + imag(ant_shift(1)) * alpha * j;
vec_buf(i,2) = ((frealj * real(ant_shift(2))) - (fimagj * imag(ant_shift(2)))) * alpha+ ((fimagj * real(ant_shift(2))) + (frealj * imag(ant_shift(2)))) * alpha * j;
for k = 3 : ant_chnanels
ftemp1 = frealj;
frealj = (frealj * freal1) - (fimagj * fimag1);
fimagj = (ftemp1 * fimag1) + (fimagj * freal1);
vec_buf(i,k) = ((frealj * real(ant_shift(k))) - (fimagj * imag(ant_shift(k)))) * alpha + ((fimagj * real(ant_shift(k))) + (frealj * imag(ant_shift(k)))) * alpha * j;
end
end
d = fullfile('E:\sensortech_2\ch1_20180711_1617_01752')
file_names = dir(fullfile(d,'*.bin'));
file_num = size(file_names)(1);
cp_err_num=0;
cv_err_num=0;
cp_cv_diff=0;
ang_tor = 3;
for k = 1 : 300%file_num
fname = file_names(k).name;
fid = fopen(['ch1_20180711_1617_01752\' fname]);
true_ang = fname(end-5:end-4);
true_ang = str2num(true_ang);
signal_cnt = 0;
cvbf_val = zeros(1,vec_size);
cpbf_val = zeros(1,vec_size);
signal_cpx = zeros(1,ant_chnanels);
signal_mat = zeros(0,ant_chnanels);
ang_cp=zeros(1,0);
ang_cv=zeros(1,0);
while(1)
signal = fread(fid,16,'float');
if(size(signal)==0)
break;
end
signal_cnt++;
for i=1:ant_chnanels
signal_cpx(i) = signal(2*i-1)+signal(2*i)*j;
end
signal_mat(end+1,:)=signal_cpx;
% rn = (signal_cpx'*signal_cpx).';
% %rn /=1e+008;
% rn_inv = inv(rn);
% for i=1:vec_size
% %共轭转置
% cpbf_val(i) = real(vec_buf(i,:)*rn_inv*vec_buf(i,:)');
% cvbf_val(i) = real(vec_buf(i,:)*rn*vec_buf(i,:)');
% end
% [tmp_min, ang_cp(end+1)] = min(cpbf_val);
% [tmp_max, ang_cv(end+1)] = max(cvbf_val);
end
%sig=[-88-25j, -147+108j, 96-44j, -26+158j, -71+95j, -67+10j];
rn = (signal_mat'*signal_mat).';
%rn /=1e+008;
rn_inv = inv(rn);
for i=1:vec_size
%共轭转置
cpbf_val(i) = real(vec_buf(i,:)*rn_inv*vec_buf(i,:)');
cvbf_val(i) = real(vec_buf(i,:)*rn*vec_buf(i,:)');
end
[tmp_min, ang_cp(end+1)] = min(cpbf_val);
[tmp_max, ang_cv(end+1)] = max(cvbf_val);
if(abs(ang_cp(1)-true_ang) > ang_tor)
% disp('capon error: ')
% true_ang
% ang_cp(1)
cp_err_num++;
end
if(abs(ang_cv(1)-true_ang) > ang_tor)
% disp('conventional error: ')
% true_ang
% ang_cv(1)
cv_err_num++;
end
if(abs(ang_cv(1)-ang_cp(1)) > 3)
% disp('conventional error: ')
% true_ang
% ang_cv(1)
cp_cv_diff++;
end
end
cp_err_num
cv_err_num
cp_cv_diff