当前位置: 首页 > news >正文

画图,matlab,


clear;close all;clc;tic;dirOutput = dir('*.dat');             % 罗列所有后缀-1.dat的文件列表,罗列BDDATA的数据
filenames = string({dirOutput.name}');  % 提取文件名%% 丢包统计
FILENAMES = [""];
LOSS_YTJ  = [  ];
LOSS_RAD  = [  ];
LOSS_ETH  = [  ];
LOSS_YK   = [  ];
j=1;%% 批处理
for i = 1:length(filenames)%% 文件名filename = char(filenames(i)); filename = string(filename([1:end-16])); %  例如:20090111-190130-2%% 加载数据文件TELEMETRY_fileID    = fopen(filename+'TELEMETRY-v1.dat');   % 获取 TELEMETRY 文件ID DATA_TELEMETRY      = fread(TELEMETRY_fileID);                  % 读取 TELEMETRY 文件数据fclose(TELEMETRY_fileID); % 关闭文件%% 解析数据文件TELEMETRY_RAW   = reshape(DATA_TELEMETRY,[ 239 length(DATA_TELEMETRY)/239])';   % 帧格式转换cnt_yaoce_link  = TELEMETRY_RAW(:,17);                                          % 遥测链路cnt         (239字节的第17字节)time_yitiji     = (TELEMETRY_RAW(:,234)*2^8 + TELEMETRY_RAW(:,233)) ;           % 一体机时间           (239字节的第234233字节)cnt_gnd_eth     = TELEMETRY_RAW(:,13);                                          % 地面接口网口cnt      (239字节的第13字节)ip_config       = TELEMETRY_RAW(:,30);                                          % 电台反馈IP           (239字节的第30字节)cfk_ml          = TELEMETRY_RAW(:,31);                                          % 最近测发控指令       (239字节的第31字节)signal_power    = TELEMETRY_RAW(:,32);                                          % 遥控信号能量值单字节 (239字节的第32字节)zijian          = TELEMETRY_RAW(:,33);                                          % 自检完成             (239字节的第33字节)state_yaokong   = TELEMETRY_RAW(:,32);                                          % 遥控链路通断状态     (239字节的第32字节)control_yaokong = TELEMETRY_RAW(:,36)*2^8+TELEMETRY_RAW(:,35);                  % 地面遥控指令是否连续 (239字节的第3635字节)angle_cabrage   = (TELEMETRY_RAW(:,50)*2^8 + TELEMETRY_RAW(:,49)) * 0.01;       % 飞行姿态 俯仰       (239字节第5049)angle_roll      = (TELEMETRY_RAW(:,52)*2^8 + TELEMETRY_RAW(:,51)) * 0.01;       % 飞行姿态 滚动       (239字节第5251)angle_Heading   = (TELEMETRY_RAW(:,54)*2^8 + TELEMETRY_RAW(:,53)) * 0.01;       % 飞行姿态 航向       (239字节第5453)speed_bd        = TELEMETRY_RAW(:,149)*0.005;                                   % 靶弹飞行速度        (239字节第149字节)high_bd         = (TELEMETRY_RAW(:,88)*2^8+TELEMETRY_RAW(:,87))*0.2-500;        % 靶弹飞行高度        (239字节第8887字节)len_tele    = length(cnt_yaoce_link); % TELEMETRY 数据长度%% 数据处理% 遥测链路是否丢包,前后相减是否为1diubao_yaoce_link   = diff(cnt_yaoce_link);diubao_yaoce_link(diubao_yaoce_link <= 0) = diubao_yaoce_link(diubao_yaoce_link <= 0) + 256;    % 处理负数flag_diubao_yaoce_link = diubao_yaoce_link ~= 1;                                                % 遥测链路丢包时刻count_diubao_yaoce_link = sum(diubao_yaoce_link-1);                                             % 遥测链路丢包数% 遥测是否丢包,基于一体机,前后相减是否为1 diubao_yaoce_yitiji = diff(time_yitiji);
%     diubao_yaoce_yitiji(diubao_yaoce_yitiji == -65535) = 1;     % 处理负数diubao_yaoce_yitiji(diubao_yaoce_yitiji < 0) = diubao_yaoce_yitiji(diubao_yaoce_yitiji < 0) + 65536;     % 处理负数flag_diubao_yaoce_yitiji = diubao_yaoce_yitiji ~= 1;      % 遥测丢包时刻count_diubao_yaoce_yitiji = sum(diubao_yaoce_yitiji-1);       % 遥测总丢包数% 地面网口接口是否丢包,前后相减是否为1diubao_gnd_eth      = diff(cnt_gnd_eth);diubao_gnd_eth(diubao_gnd_eth <= 0) = diubao_gnd_eth(diubao_gnd_eth <= 0) + 256;    % 处理负数flag_diubao_gnd_eth = diubao_gnd_eth ~= 1;                                          % 地面网口丢包时刻count_diubao_gnd_eth = sum(diubao_gnd_eth-1);                                         % 地面网口丢包数% 链路能量情况,整个字节显示% 自检完成,加载成功,判断是否等于FFstate_zijian = zijian == 0xff;% 遥控链路通断状态(大于0即可)state_yk_link = state_yaokong > 0;% 地面遥控指令是否连续(是否存在00)state_yk_zl = control_yaokong == 0;k=1;while state_yk_zl(k) == 1 && k < 500 % 清除错误的数值,容错前50个。state_yk_zl(k) = 0;k = k+1;  endcount_state_yk_zl = sum(state_yk_zl); % 遥控总丢包数flag_state_yk_zl = state_yk_zl ~= 0;% 遥控指令切换状态,切换计数器% 角度负数处理angle_cabrage(angle_cabrage>327.67) = angle_cabrage(angle_cabrage>327.67) - 655.36; angle_roll(angle_roll>327.67)       = angle_roll(angle_roll>327.67)       - 655.36; angle_Heading(angle_Heading>327.67) = angle_Heading(angle_Heading>327.67) - 655.36; % 统计丢包数(网络、链路、遥测、遥控)FILENAMES(j) = filename; % 文件名称
%     LOSS_YTJ(j)  = count_diubao_yaoce_yitiji - count_diubao_yaoce_link;     % 一体机丢包
%     LOSS_RAD(j)  = count_diubao_yaoce_link - count_diubao_gnd_eth;          % 遥测链路丢包LOSS_YTJ(j)  = count_diubao_yaoce_yitiji ;     % 一体机丢包LOSS_RAD(j)  = count_diubao_yaoce_link ;          % 遥测链路丢包LOSS_ETH(j)  = count_diubao_gnd_eth;                                    % 以太网丢包LOSS_YK(j)   = count_state_yk_zl;                                       % 遥控丢包disp('如上图所示,网络丢'+string(LOSS_ETH(j))+'包,遥测链路丢'+string(LOSS_RAD(j))+'包,一体机丢'+string(LOSS_YTJ(j))+'包。'); % 快速报告j=j+1;%% 创建对应文件名的文件夹mkdir(filename);%% 绘制第一类图 : 丢包 帧计数(网络、链路、遥测、指令)  ( BD 指令和指令切换时刻)img = gcf;clf(img);hold on;plot(flag_diubao_gnd_eth*150,'--');plot(flag_diubao_yaoce_link*140,'.');plot(flag_diubao_yaoce_yitiji*130,'s');plot(cfk_ml,'r');plot([0,len_tele],[97,97],'linestyle','--');plot([0,len_tele],[113,113],'linestyle','--');legend('网络丢包','链路丢包','一体机丢包','指令','0x61大小功率','0x71数据装订','Location','NorthEastOutside');title('丢包与帧计数(网络、链路、遥测、指令)');ylim([-0.3 155]);hold off;print(img,'-dpng','-r800',filename+'/1_1丢包帧计数与指令.png');savefig(img,filename+'/1_1丢包帧计数与指令.fig');%     clf(img);
%     hold on;
%     plot(state_yk_qie(:,2),'r');
%     plot(yk_zl_qiehuan*150,'g--');
%     plot([0,len_bd],[97,97],'linestyle','--');
%     plot([0,len_bd],[113,113],'linestyle','--');
%     legend('指令','指令切换时刻','0x61大小功率','0x71数据装订','Location','NorthEastOutside');
%     ylim([-0.3 155]);
%     hold off;
%     print(img,'-dpng','-r800',filename+'/1_2靶弹指令和指令切换时刻.png');
%     savefig(img,filename+'/1_2靶弹指令和指令切换时刻.fig');%% 绘制第二类图  遥控信号能量 & 遥控丢包 & 自检完成clf(img);hold on;plot(signal_power,'r');% 通断、其余未断链plot([0,len_tele],[0,0],'linestyle','--'); % 大信号plot([0,len_tele],[48,48],'linestyle','--');plot([0,len_tele],[95,95],'linestyle','--');% 中信号plot([0,len_tele],[96,96],'linestyle','--');plot([0,len_tele],[143,143],'linestyle','--');% 小信号plot([0,len_tele],[144,144],'linestyle','--');plot([0,len_tele],[191,191],'linestyle','--');% 遥控丢包plot(flag_state_yk_zl*150,'g');% 自检plot(state_zijian * 10);  % 自检title('遥控信号能量 & 遥控丢包 & 自检完成');legend('遥控信号能量','通断','大信号上限','大信号下限', ...'中信号下限','中信号上限','小信号下限','小信号上限',...'遥控丢包','自检完成','Location','NorthEastOutside');hold off;print(img,'-dpng','-r800',filename+'/2_遥控丢包_遥控能量.png');savefig(img,filename+'/2_遥控丢包_遥控能量.fig');%% 绘制第三类图 飞行 (俯仰、滚动、航向)
%     clf(img);
%     hold on;
%     plot(angle_cabrage);
%     plot(angle_roll);
%     plot(angle_Heading);
%     title('俯仰、滚动、航向');
%     ylim([-180 180]);
%     hold off;
%     print(img,'-dpng','-r800',filename+'/3_飞行角度.png');
%     savefig(img,filename+'/3_飞行角度.fig'); %% 绘制第四类图 IP分析图
%     clf(img);
%     plot(ip_config);
%     title('IP反馈图');
%     print(img,'-dpng','-r800',filename+'/4_IP反馈图.png');
%     savefig(img,filename+'/4_IP反馈图.fig'); %% 纯链路丢包clf(img);hold on;plot((flag_diubao_yaoce_link-flag_diubao_gnd_eth)*150,'--');plot(cfk_ml,'r');plot([0,len_tele],[97,97],'linestyle','--');plot([0,len_tele],[113,113],'linestyle','--');legend('链路丢包','指令','0x61大小功率','0x71数据装订','Location','NorthEastOutside');title('链路丢包与帧计数(链路、指令)');ylim([-0.3 155]);hold off;print(img,'-dpng','-r800',filename+'/5丢包帧计数与指令.png');savefig(img,filename+'/5纯链路丢包帧计数与指令.fig');%% 纯一体机丢包clf(img);hold on;plot((flag_diubao_yaoce_yitiji-flag_diubao_yaoce_link)*150,'--');plot(cfk_ml,'r');plot([0,len_tele],[97,97],'linestyle','--');plot([0,len_tele],[113,113],'linestyle','--');legend('一体机丢包','指令','0x61大小功率','0x71数据装订','Location','NorthEastOutside');title('一体机丢包与帧计数(链路、指令)');ylim([-0.3 155]);hold off;print(img,'-dpng','-r800',filename+'/6丢包帧计数与指令.png');savefig(img,filename+'/6纯一体丢包帧计数与指令.fig');%% 纯网络丢包clf(img);hold on;plot(flag_diubao_gnd_eth*150,'--');plot(cfk_ml,'r');plot([0,len_tele],[97,97],'linestyle','--');plot([0,len_tele],[113,113],'linestyle','--');legend('网络链路丢包','指令','0x61大小功率','0x71数据装订','Location','NorthEastOutside');title('网络丢包与帧计数(链路、指令)');ylim([-0.3 155]);hold off;print(img,'-dpng','-r800',filename+'/7丢包帧计数与指令.png');savefig(img,filename+'/7纯网络丢包帧计数与指令.fig');save(filename+'/8_data.mat', ...'cnt_yaoce_link','diubao_yaoce_link','flag_diubao_yaoce_link', ...'time_yitiji','diubao_yaoce_yitiji','flag_diubao_yaoce_yitiji', ...'cnt_gnd_eth','diubao_gnd_eth','flag_diubao_gnd_eth');
end%% 数据统计与导出
FILENAMES=FILENAMES';
LOSS_YTJ = LOSS_YTJ';
LOSS_RAD=LOSS_RAD';
LOSS_ETH=LOSS_ETH';
LOSS_YK=LOSS_YK';writetable(table(FILENAMES,LOSS_YTJ,LOSS_RAD,LOSS_ETH,LOSS_YK,'VariableNames',["FILENAMES","LOSS_YTJ","LOSS_RAD","LOSS_ETH","LOSS_YK"]),'丢包数据统计(一体机丢包-遥测链路丢包-地面网口丢包-遥控丢包).csv');toc;
%% 清空
clear all;close all;clc;
tic; % 计时dirOutput = dir('*-1.dat');             % 罗列所有后缀-1.dat的文件列表,罗列BDDATA的数据
filenames = string({dirOutput.name}');  % 提取文件名%% 丢包统计
FILENAMES = [""];
LOSS_YTJ  = [  ];
LOSS_RAD  = [  ];
LOSS_ETH  = [  ];
LOSS_YK   = [  ];
j=1;%% 批处理
for i = 1:length(filenames)%% 文件名filename = char(filenames(i)); filename = string(filename([1:end-16])); %  例如:20090111-190130-2%% 加载数据文件BDDATA_fileID       = fopen(filename+'-A2-BDDATA-1.dat');       % 获取 BDDATA    文件ID  TELEMETRY_fileID    = fopen(filename+'-C2-TELEMETRY-v1.dat');   % 获取 TELEMETRY 文件ID DATA_BDDATA         = fread(BDDATA_fileID);                     % 读取 BDDATA    文件数据DATA_TELEMETRY      = fread(TELEMETRY_fileID);                  % 读取 TELEMETRY 文件数据fclose(BDDATA_fileID); fclose(TELEMETRY_fileID); % 关闭文件%% 解析数据文件TELEMETRY_RAW   = reshape(DATA_TELEMETRY,[ 239 length(DATA_TELEMETRY)/239])';   % 帧格式转换BDDATA_RAW      = reshape(DATA_BDDATA   ,[ 178 length(DATA_BDDATA   )/178])';   % 帧格式转换cnt_yaoce_link  = TELEMETRY_RAW(:,17);                                          % 遥测链路cnt         (239字节的第17字节)time_yitiji     = (TELEMETRY_RAW(:,234)*2^8 + TELEMETRY_RAW(:,233)) ;           % 一体机时间           (239字节的第234233字节)cnt_gnd_eth     = TELEMETRY_RAW(:,13);                                          % 地面接口网口cnt      (239字节的第13字节)ip_config       = TELEMETRY_RAW(:,30);                                          % 电台反馈IP           (239字节的第30字节)cfk_ml          = TELEMETRY_RAW(:,31);                                          % 最近测发控指令       (239字节的第31字节)signal_power    = TELEMETRY_RAW(:,32);                                          % 遥控信号能量值单字节 (239字节的第32字节)zijian          = TELEMETRY_RAW(:,33);                                          % 自检完成             (239字节的第33字节)state_yaokong   = TELEMETRY_RAW(:,32);                                          % 遥控链路通断状态     (239字节的第32字节)control_yaokong = TELEMETRY_RAW(:,36)*2^8+TELEMETRY_RAW(:,35);                  % 地面遥控指令是否连续 (239字节的第3635字节)angle_cabrage   = (TELEMETRY_RAW(:,50)*2^8 + TELEMETRY_RAW(:,49)) * 0.01;       % 飞行姿态 俯仰       (239字节第5049)angle_roll      = (TELEMETRY_RAW(:,52)*2^8 + TELEMETRY_RAW(:,51)) * 0.01;       % 飞行姿态 滚动       (239字节第5251)angle_Heading   = (TELEMETRY_RAW(:,54)*2^8 + TELEMETRY_RAW(:,53)) * 0.01;       % 飞行姿态 航向       (239字节第5453)speed_bd        = TELEMETRY_RAW(:,149)*0.005;                                   % 靶弹飞行速度        (239字节第149字节)high_bd         = (TELEMETRY_RAW(:,88)*2^8+TELEMETRY_RAW(:,87))*0.2-500;        % 靶弹飞行高度        (239字节第8887字节)state_yk_qie    = BDDATA_RAW(:,[11 10]);                                        % 遥控指令切换状态(阶梯状),BD_DATA里面第11(计数)、10(指令)字节。time_bd_yitiji  = (BDDATA_RAW(:,24)*2^24+BDDATA_RAW(:,23)*2^16+BDDATA_RAW(:,22)*2^8+BDDATA_RAW(:,21))*0.00001;len_tele    = length(cnt_yaoce_link); % TELEMETRY 数据长度len_bd      = length(state_yk_qie);   % BDDATA 数据长度%% 数据处理% 遥测链路是否丢包,前后相减是否为1diubao_yaoce_link   = diff(cnt_yaoce_link);diubao_yaoce_link(diubao_yaoce_link <= 0) = diubao_yaoce_link(diubao_yaoce_link <= 0) + 256;    % 处理负数flag_diubao_yaoce_link = diubao_yaoce_link ~= 1;                                                % 遥测链路丢包时刻count_diubao_yaoce_link = sum(diubao_yaoce_link-1);                                             % 遥测链路丢包数% 遥测是否丢包,基于一体机,前后相减是否为1 diubao_yaoce_yitiji = diff(time_yitiji);diubao_yaoce_yitiji(diubao_yaoce_yitiji < 0) = diubao_yaoce_yitiji(diubao_yaoce_yitiji < 0) + 65536;     % 处理负数flag_diubao_yaoce_yitiji = diubao_yaoce_yitiji ~= 1;      % 遥测丢包时刻count_diubao_yaoce_yitiji = sum(diubao_yaoce_yitiji-1);       % 遥测总丢包数% 地面网口接口是否丢包,前后相减是否为1diubao_gnd_eth      = diff(cnt_gnd_eth);diubao_gnd_eth(diubao_gnd_eth <= 0) = diubao_gnd_eth(diubao_gnd_eth <= 0) + 256;    % 处理负数flag_diubao_gnd_eth = diubao_gnd_eth ~= 1;                                          % 地面网口丢包时刻count_diubao_gnd_eth = sum(diubao_gnd_eth-1);                                         % 地面网口丢包数% 链路能量情况,整个字节显示% 自检完成,加载成功,判断是否等于FFstate_zijian = zijian == 0xff;% 遥控链路通断状态(大于0即可)state_yk_link = state_yaokong > 0;% 地面遥控指令是否连续(是否存在00)state_yk_zl = control_yaokong == 0;k=1;while state_yk_zl(k) == 1 && k < 500 % 清除错误的数值,容错前50个。state_yk_zl(k) = 0;k = k+1;  endcount_state_yk_zl = sum(state_yk_zl); % 遥控总丢包数flag_state_yk_zl = state_yk_zl ~= 0;% 遥控指令切换状态,切换计数器yk_zl_qiehuan = diff(state_yk_qie(:,1));% 角度负数处理angle_cabrage(angle_cabrage>327.67) = angle_cabrage(angle_cabrage>327.67) - 655.36; angle_roll(angle_roll>327.67)       = angle_roll(angle_roll>327.67)       - 655.36; angle_Heading(angle_Heading>327.67) = angle_Heading(angle_Heading>327.67) - 655.36; % 统计丢包数(网络、链路、遥测、遥控)FILENAMES(j) = filename; % 文件名称
%     LOSS_YTJ(j)  = count_diubao_yaoce_yitiji - count_diubao_yaoce_link;     % 一体机丢包
%     LOSS_RAD(j)  = count_diubao_yaoce_link - count_diubao_gnd_eth;          % 遥测链路丢包LOSS_YTJ(j)  = count_diubao_yaoce_yitiji ;     % 一体机丢包LOSS_RAD(j)  = count_diubao_yaoce_link ;          % 遥测链路丢包LOSS_ETH(j)  = count_diubao_gnd_eth;                                    % 以太网丢包LOSS_YK(j)   = count_state_yk_zl;                                       % 遥控丢包disp('如上图所示,网络丢'+string(LOSS_ETH(j))+'包,遥测链路丢'+string(LOSS_RAD(j))+'包,一体机丢'+string(LOSS_YTJ(j))+'包。'); % 快速报告j=j+1;%% 创建对应文件名的文件夹mkdir(filename);%% 绘制第一类图 : 丢包 帧计数(网络、链路、遥测、指令)  ( BD 指令和指令切换时刻)img = gcf;clf(img);hold on;plot(flag_diubao_gnd_eth*150,'--');plot(flag_diubao_yaoce_link*140,'.');plot(flag_diubao_yaoce_yitiji*130,'s');plot(cfk_ml,'r');plot([0,len_tele],[97,97],'linestyle','--');plot([0,len_tele],[113,113],'linestyle','--');legend('网络丢包','链路丢包','一体机丢包','指令','0x61大小功率','0x71数据装订','Location','NorthEastOutside');title('丢包与帧计数(网络、链路、遥测、指令)');ylim([-0.3 155]);hold off;print(img,'-dpng','-r800',filename+'/1_1丢包帧计数与指令.png');savefig(img,filename+'/1_1丢包帧计数与指令.fig');clf(img);hold on;plot(state_yk_qie(:,2),'r');plot(yk_zl_qiehuan*150,'g--');plot([0,len_bd],[97,97],'linestyle','--');plot([0,len_bd],[113,113],'linestyle','--');legend('指令','指令切换时刻','0x61大小功率','0x71数据装订','Location','NorthEastOutside');ylim([-0.3 155]);hold off;print(img,'-dpng','-r800',filename+'/1_2靶弹指令和指令切换时刻.png');savefig(img,filename+'/1_2靶弹指令和指令切换时刻.fig');%% 绘制第二类图  遥控信号能量 & 遥控丢包 & 自检完成clf(img);hold on;plot(signal_power,'r');% 通断、其余未断链plot([0,len_tele],[0,0],'linestyle','--'); % 大信号plot([0,len_tele],[48,48],'linestyle','--');plot([0,len_tele],[95,95],'linestyle','--');% 中信号plot([0,len_tele],[96,96],'linestyle','--');plot([0,len_tele],[143,143],'linestyle','--');% 小信号plot([0,len_tele],[144,144],'linestyle','--');plot([0,len_tele],[191,191],'linestyle','--');% 遥控丢包plot(flag_state_yk_zl*150,'g');% 自检plot(state_zijian * 10);  % 自检title('遥控信号能量 & 遥控丢包 & 自检完成');legend('遥控信号能量','通断','大信号上限','大信号下限', ...'中信号下限','中信号上限','小信号下限','小信号上限',...'遥控丢包','自检完成','Location','NorthEastOutside');hold off;print(img,'-dpng','-r800',filename+'/2_遥控丢包_遥控能量.png');savefig(img,filename+'/2_遥控丢包_遥控能量.fig');%% 绘制第三类图 飞行 (俯仰、滚动、航向)
%     clf(img);
%     hold on;  
%     plot(angle_cabrage);
%     plot(angle_roll);
%     plot(angle_Heading);
%     title('俯仰、滚动、航向');
%     ylim([-180 180]);
%     hold off;
%     print(img,'-dpng','-r800',filename+'/3_飞行角度.png');
%     savefig(img,filename+'/3_飞行角度.fig'); %% 绘制第四类图 IP分析图clf(img);plot(ip_config);title('IP反馈图');print(img,'-dpng','-r800',filename+'/4_IP反馈图.png');savefig(img,filename+'/4_IP反馈图.fig'); %% 纯链路丢包clf(img);hold on;plot((flag_diubao_yaoce_link-flag_diubao_gnd_eth)*150,'--');plot(cfk_ml,'r');plot([0,len_tele],[97,97],'linestyle','--');plot([0,len_tele],[113,113],'linestyle','--');legend('链路丢包','指令','0x61大小功率','0x71数据装订','Location','NorthEastOutside');title('链路丢包与帧计数(链路、指令)');ylim([-0.3 155]);hold off;print(img,'-dpng','-r800',filename+'/5丢包帧计数与指令.png');savefig(img,filename+'/5纯链路丢包帧计数与指令.fig');%% 纯一体机丢包clf(img);hold on;plot((flag_diubao_yaoce_yitiji-flag_diubao_yaoce_link)*150,'--');plot(cfk_ml,'r');plot([0,len_tele],[97,97],'linestyle','--');plot([0,len_tele],[113,113],'linestyle','--');legend('一体机丢包','指令','0x61大小功率','0x71数据装订','Location','NorthEastOutside');title('一体机丢包与帧计数(链路、指令)');ylim([-0.3 155]);hold off;print(img,'-dpng','-r800',filename+'/6丢包帧计数与指令.png');savefig(img,filename+'/6纯一体丢包帧计数与指令.fig');%% 纯网络丢包clf(img);hold on;plot(flag_diubao_gnd_eth*150,'--');plot(cfk_ml,'r');plot([0,len_tele],[97,97],'linestyle','--');plot([0,len_tele],[113,113],'linestyle','--');legend('网络链路丢包','指令','0x61大小功率','0x71数据装订','Location','NorthEastOutside');title('网络丢包与帧计数(链路、指令)');ylim([-0.3 155]);hold off;print(img,'-dpng','-r800',filename+'/7丢包帧计数与指令.png');savefig(img,filename+'/7纯网络丢包帧计数与指令.fig');save(filename+'/8_data.mat', ...'cnt_yaoce_link','diubao_yaoce_link','flag_diubao_yaoce_link', ...'time_yitiji','diubao_yaoce_yitiji','flag_diubao_yaoce_yitiji', ...'cnt_gnd_eth','diubao_gnd_eth','flag_diubao_gnd_eth');
end%% 数据统计与导出
FILENAMES=FILENAMES';
LOSS_YTJ = LOSS_YTJ';
LOSS_RAD=LOSS_RAD';
LOSS_ETH=LOSS_ETH';
LOSS_YK=LOSS_YK';writetable(table(FILENAMES,LOSS_YTJ,LOSS_RAD,LOSS_ETH,LOSS_YK,'VariableNames',["FILENAMES","LOSS_YTJ","LOSS_RAD","LOSS_ETH","LOSS_YK"]),'丢包数据统计(一体机丢包-遥测链路丢包-地面网口丢包-遥控丢包).csv');toc;

ALL

% 计时
tic; %% 丢包统计
FILENAMES = [""];
LOSS_YTJ  = [  ];
LOSS_RAD  = [  ];
LOSS_ETH  = [  ];
LOSS_YK   = [  ];%% 加载数据文件
BD_fileID       = fopen('bd.dat');                                          % 获取 靶弹 文件ID  
ZHU_fileID      = fopen('zhu.dat');                                         % 获取 主站 文件ID 
FU_fileID       = fopen('fu.dat');                                          % 获取 副站 文件ID DATA_BD         = fread(BD_fileID);                                         % 读取 靶弹 文件数据
DATA_ZHU        = fread(ZHU_fileID);                                        % 读取 主站 文件数据
DATA_FU         = fread(FU_fileID);                                         % 读取 副站 文件数据fclose(BD_fileID); fclose(ZHU_fileID); fclose(FU_fileID);                   % 关闭文件%% 解析数据文件
ZHU_RAW     = reshape(DATA_ZHU,[239 length(DATA_ZHU)/239])';                % 主站帧格式转换
FU_RAW      = reshape(DATA_FU,[ 239 length(DATA_FU )/239])';                % 副站帧格式转换
BDDATA_RAW  = reshape(DATA_BD,[ 178 length(DATA_BD )/178])';                % 靶弹帧格式转换%% 靶弹数据解析
state_yk_qie    = BDDATA_RAW(:,[11 10]);                                    % 遥控指令切换状态(阶梯状),BD_DATA里面第11(计数)、10(指令)字节。
time_bd_yitiji  = (BDDATA_RAW(:,24)*2^24 + BDDATA_RAW(:,23)*2^16 + ...BDDATA_RAW(:,22)*2^8 + BDDATA_RAW(:,21))*0.00001;
BD_UTC_raw      = BDDATA_RAW(:,28)*2^24 + BDDATA_RAW(:,27)*2^16 + ...BDDATA_RAW(:,26)*2^8 + BDDATA_RAW(:,25);                % UTC 时间原码 (BD_DATA里面第25262728字节)
BD_UTC          = ConvertNum2UTC(BD_UTC_raw);                               % BD 的 UTC 时间
len_bd          = length(state_yk_qie);                                     % BDDATA 数据长度%% 主站数据解析
zhu_cnt_yaoce_link  = ZHU_RAW(:,17);                                        % 遥测链路cnt         (239字节的第17字节)
zhu_time_yitiji     = (ZHU_RAW(:,234)*2^8 + ZHU_RAW(:,233)) ;               % 一体机时间           (239字节的第234233字节)
zhu_sky_control_time= (ZHU_RAW(:,110)*2^24 + ZHU_RAW(:,109)*2^16 + ...ZHU_RAW(:,108)*2^8 + ZHU_RAW(:,107));               % 飞控时间            (239字节第110109108107)
zhu_cnt_gnd_eth     = ZHU_RAW(:,13);                                        % 地面接口网口cnt      (239字节的第13字节)
zhu_ip_config       = ZHU_RAW(:,30);                                        % 电台反馈IP           (239字节的第30字节)
zhu_cfk_ml          = ZHU_RAW(:,31);                                        % 最近测发控指令       (239字节的第31字节)
zhu_signal_power    = ZHU_RAW(:,32);                                        % 遥控信号能量值单字节 (239字节的第32字节)
zhu_zijian          = ZHU_RAW(:,33);                                        % 自检完成             (239字节的第33字节)
zhu_state_yaokong   = ZHU_RAW(:,32);                                        % 遥控链路通断状态     (239字节的第32字节)
zhu_control_yaokong = ZHU_RAW(:,36)*2^8 + ZHU_RAW(:,35);                    % 地面遥控指令是否连续 (239字节的第3635字节)
zhu_angle_cabrage   = (ZHU_RAW(:,50)*2^8 + ZHU_RAW(:,49)) * 0.01;           % 飞行姿态 俯仰       (239字节第5049)
zhu_angle_roll      = (ZHU_RAW(:,52)*2^8 + ZHU_RAW(:,51)) * 0.01;           % 飞行姿态 滚动       (239字节第5251)
zhu_angle_Heading   = (ZHU_RAW(:,54)*2^8 + ZHU_RAW(:,53)) * 0.01;           % 飞行姿态 航向       (239字节第5453)
zhu_longitude       = (ZHU_RAW(:,83)*2^16 + ZHU_RAW(:,82)*2^8 + ...ZHU_RAW(:,81));                                     % 经度                (239字节第838281)原始数据
zhu_latitude        = (ZHU_RAW(:,86)*2^16 + ZHU_RAW(:,85)*2^8 + ...ZHU_RAW(:,84));                                     % 纬度                (239字节第868584)原始数据
zhu_positiong_high  = (ZHU_RAW(:,88)*2^8 + ZHU_RAW(:,87)) * 0.2 - 500;      % 高度                 (239字节的第8887字节)
zhu_speed_bd        = ZHU_RAW(:,149)*0.005;                                 % 靶弹飞行速度        (239字节第149字节)
zhu_high_bd         = (ZHU_RAW(:,88)*2^8 + ZHU_RAW(:,87))*0.2 - 500;        % 靶弹飞行高度        (239字节第8887字节)
zhu_UTC_raw         =(ZHU_RAW(:,104)*2^24 + ZHU_RAW(:,103)*2^16 + ...ZHU_RAW(:,102)*2^8 + ZHU_RAW(:,101));               % UTC 时间原码        (239字节第104103102101)
zhu_UTC             = ConvertNum2UTC(zhu_UTC_raw);                          % UTC 时间zhu_len_tele        = length(zhu_cnt_yaoce_link);                           % 主站数据包长度
%% 副站数据解析
fu_cnt_yaoce_link  = FU_RAW(:,17);                                          % 遥测链路cnt         (239字节的第17字节)
fu_time_yitiji     = (FU_RAW(:,234)*2^8 + FU_RAW(:,233)) ;                  % 一体机时间           (239字节的第234233字节)
fu_sky_control_time= (FU_RAW(:,110)*2^24 + FU_RAW(:,109)*2^16 + ...FU_RAW(:,108)*2^8 + FU_RAW(:,107));                 % 飞控时间            (239字节第110109108107)
fu_cnt_gnd_eth     = FU_RAW(:,13);                                          % 地面接口网口cnt      (239字节的第13字节)
fu_ip_config       = FU_RAW(:,30);                                          % 电台反馈IP           (239字节的第30字节)
fu_cfk_ml          = FU_RAW(:,31);                                          % 最近测发控指令       (239字节的第31字节)
fu_signal_power    = FU_RAW(:,32);                                          % 遥控信号能量值单字节 (239字节的第32字节)
fu_zijian          = FU_RAW(:,33);                                          % 自检完成             (239字节的第33字节)
fu_state_yaokong   = FU_RAW(:,32);                                          % 遥控链路通断状态     (239字节的第32字节)
fu_control_yaokong = FU_RAW(:,36)*2^8 + FU_RAW(:,35);                       % 地面遥控指令是否连续 (239字节的第3635字节)
fu_angle_cabrage   = (FU_RAW(:,50)*2^8 + FU_RAW(:,49)) * 0.01;              % 飞行姿态 俯仰       (239字节第5049)
fu_angle_roll      = (FU_RAW(:,52)*2^8 + FU_RAW(:,51)) * 0.01;              % 飞行姿态 滚动       (239字节第5251)
fu_angle_Heading   = (FU_RAW(:,54)*2^8 + FU_RAW(:,53)) * 0.01;              % 飞行姿态 航向       (239字节第5453)
fu_longitude       = (FU_RAW(:,83)*2^16 + FU_RAW(:,82)*2^8 + ...FU_RAW(:,81));                                      % 经度                (239字节第838281)原始数据
fu_latitude        = (FU_RAW(:,86)*2^16 + FU_RAW(:,85)*2^8 + ...FU_RAW(:,84));                                      % 纬度                (239字节第868584)原始数据
fu_positiong_high  = (FU_RAW(:,88)*2^8 + FU_RAW(:,87)) * 0.2 - 500;         % 高度                 (239字节的第8887字节)
fu_speed_bd        = FU_RAW(:,149)*0.005;                                   % 靶弹飞行速度        (239字节第149字节)
fu_high_bd         = (FU_RAW(:,88)*2^8 + FU_RAW(:,87))*0.2-500;             % 靶弹飞行高度        (239字节第8887字节)
fu_UTC_raw         =(FU_RAW(:,104)*2^24 + FU_RAW(:,103)*2^16 + ...FU_RAW(:,102)*2^8 + FU_RAW(:,101));                 % UTC 时间原码        (239字节第104103102101)
fu_UTC             = ConvertNum2UTC(fu_UTC_raw);                            % UTC 时间
fu_len_tele        = length(fu_cnt_yaoce_link);                             % 副站数据包长度
%% 主站数据处理% 遥测链路是否丢包,前后相减是否为1zhu_diubao_yaoce_link   = diff(zhu_cnt_yaoce_link);zhu_diubao_yaoce_link(zhu_diubao_yaoce_link <= 0) = zhu_diubao_yaoce_link(zhu_diubao_yaoce_link <= 0) + 256;    % 处理负数zhu_flag_diubao_yaoce_link = zhu_diubao_yaoce_link ~= 1;                                                % 遥测链路丢包时刻zhu_count_diubao_yaoce_link = sum(zhu_diubao_yaoce_link-1);                                             % 遥测链路丢包数% 遥测是否丢包,基于一体机,前后相减是否为1 zhu_diubao_yaoce_yitiji = diff(zhu_time_yitiji);zhu_diubao_yaoce_yitiji(zhu_diubao_yaoce_yitiji < 0) = zhu_diubao_yaoce_yitiji(zhu_diubao_yaoce_yitiji < 0) + 65536;     % 处理负数zhu_flag_diubao_yaoce_yitiji = zhu_diubao_yaoce_yitiji ~= 1;      % 遥测丢包时刻zhu_count_diubao_yaoce_yitiji = sum(zhu_diubao_yaoce_yitiji-1);       % 遥测总丢包数% 地面网口接口是否丢包,前后相减是否为1zhu_diubao_gnd_eth      = diff(zhu_cnt_gnd_eth);zhu_diubao_gnd_eth(zhu_diubao_gnd_eth <= 0) = zhu_diubao_gnd_eth(zhu_diubao_gnd_eth <= 0) + 256;    % 处理负数zhu_flag_diubao_gnd_eth = zhu_diubao_gnd_eth ~= 1;                                          % 地面网口丢包时刻zhu_count_diubao_gnd_eth = sum(zhu_diubao_gnd_eth-1);                                         % 地面网口丢包数% 遥控链路通断状态(大于0即可)zhu_state_yk_link = zhu_state_yaokong > 0;% 地面遥控指令是否连续(是否存在00)zhu_state_yk_zl = zhu_control_yaokong == 0;k=1;while zhu_state_yk_zl(k) == 1 && k < 500 % 清除错误的数值,容错前50个。zhu_state_yk_zl(k) = 0;k = k+1;  endzhu_count_state_yk_zl = sum(zhu_state_yk_zl); % 遥控总丢包数zhu_flag_state_yk_zl = zhu_state_yk_zl ~= 0;% 遥控指令切换状态,切换计数器yk_zl_qiehuan = diff(state_yk_qie(:,1));% 角度负数处理zhu_angle_cabrage(zhu_angle_cabrage>327.67) = zhu_angle_cabrage(zhu_angle_cabrage>327.67) - 655.36; zhu_angle_roll(zhu_angle_roll>327.67)       = zhu_angle_roll(zhu_angle_roll>327.67)       - 655.36; zhu_angle_Heading(zhu_angle_Heading>327.67) = zhu_angle_Heading(zhu_angle_Heading>327.67) - 655.36; % 经纬度负数处理 比例尺换算zhu_longitude(zhu_longitude>8388607)    = zhu_longitude(zhu_longitude>8388607) - 16777216;zhu_latitude(zhu_latitude>8388607)      = zhu_latitude(zhu_latitude>8388607) - 16777216;zhu_longitude                           = zhu_longitude * 0.00005;zhu_latitude                            = zhu_latitude * 0.00005;% 轨迹与丢包图zhu_remove_eth = zhu_flag_diubao_yaoce_link-zhu_flag_diubao_gnd_eth;zhu_longitude_err = zhu_longitude(zhu_remove_eth==1);zhu_latitude_err = zhu_latitude(zhu_remove_eth==1);zhu_high_err = zhu_positiong_high(zhu_remove_eth==1);zhu_longitude_right = zhu_longitude(zhu_remove_eth==0);zhu_latitude_right = zhu_latitude(zhu_remove_eth==0);zhu_high_right = zhu_positiong_high(zhu_remove_eth==0);% 统计丢包数(网络、链路、遥测、遥控)FILENAMES(1) = 'main';                                                  % 文件名称LOSS_YTJ(1)  = zhu_count_diubao_yaoce_yitiji ;                          % 一体机丢包LOSS_RAD(1)  = zhu_count_diubao_yaoce_link ;                            % 遥测链路丢包LOSS_ETH(1)  = zhu_count_diubao_gnd_eth;                                % 以太网丢包LOSS_YK(1)   = zhu_count_state_yk_zl;                                   % 遥控丢包disp('如上图所示,网络丢'+string(LOSS_ETH(1))+'包,遥测链路丢'+ ...string(LOSS_RAD(1))+'包,一体机丢'+string(LOSS_YTJ(1))+ ...'包,遥控丢'+string(LOSS_YK(1))+'包。');                              % 快速报告%% 副站数据处理% 遥测链路是否丢包,前后相减是否为1fu_diubao_yaoce_link   = diff(fu_cnt_yaoce_link);fu_diubao_yaoce_link(fu_diubao_yaoce_link <= 0) = fu_diubao_yaoce_link(fu_diubao_yaoce_link <= 0) + 256;    % 处理负数fu_flag_diubao_yaoce_link = fu_diubao_yaoce_link ~= 1;                                                % 遥测链路丢包时刻fu_count_diubao_yaoce_link = sum(fu_diubao_yaoce_link-1);                                             % 遥测链路丢包数% 遥测是否丢包,基于一体机,前后相减是否为1 fu_diubao_yaoce_yitiji = diff(fu_time_yitiji);fu_diubao_yaoce_yitiji(fu_diubao_yaoce_yitiji < 0) = fu_diubao_yaoce_yitiji(fu_diubao_yaoce_yitiji < 0) + 65536;     % 处理负数fu_flag_diubao_yaoce_yitiji = fu_diubao_yaoce_yitiji ~= 1;      % 遥测丢包时刻fu_count_diubao_yaoce_yitiji = sum(fu_diubao_yaoce_yitiji-1);       % 遥测总丢包数% 地面网口接口是否丢包,前后相减是否为1fu_diubao_gnd_eth      = diff(fu_cnt_gnd_eth);fu_diubao_gnd_eth(fu_diubao_gnd_eth <= 0) = fu_diubao_gnd_eth(fu_diubao_gnd_eth <= 0) + 256;    % 处理负数fu_flag_diubao_gnd_eth = fu_diubao_gnd_eth ~= 1;                                          % 地面网口丢包时刻fu_count_diubao_gnd_eth = sum(fu_diubao_gnd_eth-1);                                         % 地面网口丢包数% 遥控链路通断状态(大于0即可)fu_state_yk_link = fu_state_yaokong > 0;% 地面遥控指令是否连续(是否存在00)fu_state_yk_zl = fu_control_yaokong == 0;k=1;while fu_state_yk_zl(k) == 1 && k < 500 % 清除错误的数值,容错前50个。fu_state_yk_zl(k) = 0;k = k+1;  endfu_count_state_yk_zl = sum(fu_state_yk_zl); % 遥控总丢包数fu_flag_state_yk_zl = fu_state_yk_zl ~= 0;% 角度负数处理fu_angle_cabrage(fu_angle_cabrage>327.67) = fu_angle_cabrage(fu_angle_cabrage>327.67) - 655.36; fu_angle_roll(fu_angle_roll>327.67)       = fu_angle_roll(fu_angle_roll>327.67)       - 655.36; fu_angle_Heading(fu_angle_Heading>327.67) = fu_angle_Heading(fu_angle_Heading>327.67) - 655.36; % 经纬度负数处理 比例尺换算fu_longitude(fu_longitude>8388607)    = fu_longitude(fu_longitude>8388607) - 16777216;fu_latitude(fu_latitude>8388607)      = fu_latitude(fu_latitude>8388607) - 16777216;fu_longitude                       = fu_longitude * 0.00005;fu_latitude                        = fu_latitude * 0.00005;% 轨迹与丢包图fu_remove_eth = fu_flag_diubao_yaoce_link-fu_flag_diubao_gnd_eth;fu_longitude_err = fu_longitude(fu_remove_eth==1);fu_latitude_err = fu_latitude(fu_remove_eth==1);fu_high_err = fu_positiong_high(fu_remove_eth==1);fu_longitude_right = fu_longitude(fu_remove_eth==0);fu_latitude_right = fu_latitude(fu_remove_eth==0);fu_high_right = fu_positiong_high(fu_remove_eth==0);% 统计丢包数(网络、链路、遥测、遥控)FILENAMES(2) = 'slave';                                                    % 文件名称LOSS_YTJ(2)  = fu_count_diubao_yaoce_yitiji ;                              % 一体机丢包LOSS_RAD(2)  = fu_count_diubao_yaoce_link ;                                % 遥测链路丢包LOSS_ETH(2)  = fu_count_diubao_gnd_eth;                                    % 以太网丢包LOSS_YK(2)   = fu_count_state_yk_zl;                                       % 遥控丢包disp('如上图所示,网络丢'+string(LOSS_ETH(2))+'包,遥测链路丢'+ ...string(LOSS_RAD(2))+'包,一体机丢'+string(LOSS_YTJ(2))+ ...'包,遥控丢'+string(LOSS_YK(2))+'包。');                                % 快速报告[Angle_Antenna,Length,fuyang_test] = ...Antenna_direction(109.621197,40.847384,fu_longitude,fu_latitude,...fu_positiong_high,fu_angle_Heading);                                % 副站 仰角,距离,[Angle_Antenna_zhu,Length_zhu,fuyang_test_zhu] = ...Antenna_direction(109.621197,40.847384,zhu_longitude,zhu_latitude,...zhu_positiong_high,zhu_angle_Heading);                              % 主站 仰角,距离
%% 联合数据分析
% 遥控信号能量 & 主站遥控丢包
img = gcf;
clf(img);
hold on;
plot(zhu_signal_power,'r');plot([0,zhu_len_tele],[48,48],'linestyle','--');        % 大信号
plot([0,zhu_len_tele],[95,95],'linestyle','--');        % 大信号
plot([0,zhu_len_tele],[96,96],'linestyle','--');        % 中信号
plot([0,zhu_len_tele],[143,143],'linestyle','--');      % 中信号
plot([0,zhu_len_tele],[144,144],'linestyle','--');      % 小信号
plot([0,zhu_len_tele],[191,191],'linestyle','--');      % 小信号    
plot(zhu_flag_state_yk_zl*150,'g');                     % 遥控丢包title('遥控信号能量 & 主站遥控丢包');   
legend('遥控信号能量','大信号上限','大信号下限', ...'中信号下限','中信号上限','小信号下限','小信号上限',...'遥控丢包','Location','NorthEastOutside');
hold off;
savefig(img,'1_遥控丢包_遥控能量zhu.fig');% 遥控信号能量 & 副站遥控丢包
img = gcf;
clf(img);
hold on;
plot(fu_signal_power,'r');plot([0,fu_len_tele],[48,48],'linestyle','--');        % 大信号
plot([0,fu_len_tele],[95,95],'linestyle','--');        % 大信号
plot([0,fu_len_tele],[96,96],'linestyle','--');        % 中信号
plot([0,fu_len_tele],[143,143],'linestyle','--');      % 中信号
plot([0,fu_len_tele],[144,144],'linestyle','--');      % 小信号
plot([0,fu_len_tele],[191,191],'linestyle','--');      % 小信号    
plot(fu_flag_state_yk_zl*150,'g');                     % 遥控丢包title('遥控信号能量 & 副站遥控丢包');   
legend('遥控信号能量','大信号上限','大信号下限', ...'中信号下限','中信号上限','小信号下限','小信号上限',...'遥控丢包','Location','NorthEastOutside');
hold off;
savefig(img,'1_遥控丢包_遥控能量fu.fig');% 主站遥控丢包与飞行轨迹
clf(img);
subplot(1,2,1);
scatter3(zhu_longitude,zhu_latitude,zhu_positiong_high,10,"blue");
hold on;
scatter3(   zhu_longitude(zhu_flag_state_yk_zl==1), ...zhu_latitude(zhu_flag_state_yk_zl==1), ...zhu_positiong_high(zhu_flag_state_yk_zl==1),100,"red");
ylim([40.75 40.95]);
xlim([109 109.7]);
zlim([1200 2000]);
xlabel("longitude");ylabel("latitude");zlabel("high");
title('靶弹飞行轨迹图 & 主站遥控丢包');   
legend('飞行轨迹','遥控丢包','Location','NorthEastOutside');
% savefig(img,'1_2_轨迹与遥控丢包主站.fig'); 
% hold off;% 副站遥控丢包 与 飞行轨迹
% clf(img);
subplot(1,2,2);
scatter3(fu_longitude,fu_latitude,fu_positiong_high,10,"blue");
hold on;
scatter3(   fu_longitude(fu_flag_state_yk_zl==1), ...fu_latitude(fu_flag_state_yk_zl==1), ...fu_positiong_high(fu_flag_state_yk_zl==1),100,"red");
ylim([40.75 40.95]);
xlim([109 109.7]);
zlim([1200 2000]);
xlabel("longitude");ylabel("latitude");zlabel("high");
title('靶弹飞行轨迹图 & 副站遥控丢包');   
legend('飞行轨迹','遥控丢包','Location','NorthEastOutside');
savefig(img,'1_2_轨迹与遥控丢包主副站比较图.fig'); 
hold off;% 飞行(俯仰、滚动、航向)& 丢包时刻
% 飞行(经纬度、高度)& 丢包时刻
clf(img);
hold on;  
plot(zhu_angle_cabrage);
plot(zhu_angle_roll);
plot(zhu_angle_Heading);
plot(zhu_flag_diubao_yaoce_link*150,'g--');
legend('俯仰角','滚动角','航向角','遥测丢包','Location','NorthEastOutside');
xlabel('时刻');ylabel("角度值");
title('主站:俯仰、滚动、航向 & 丢包图');
ylim([-180 180]);
hold off;
% print(img,'-dpng','-r800','2_1_飞行角度zhu.png');
savefig(img,'2_1_飞行角度zhu.fig'); clf(img);
hold off;
scatter3(zhu_longitude_right,zhu_latitude_right,zhu_high_right,10,"blue");
hold on;
scatter3(zhu_longitude_err,zhu_latitude_err,zhu_high_err,50,"red");
xlabel("longitude");ylabel("latitude");zlabel("high");
ylim([40.75 40.95]);
xlim([109 109.7]);
zlim([1200 2000]);
title('主站:飞行轨迹 & 丢包图');
hold off;
savefig(img,'2_2_轨迹与丢包zhu.fig'); clf(img);
hold on;  
plot(fu_angle_cabrage);
plot(fu_angle_roll);
plot(fu_angle_Heading);
plot(fu_flag_diubao_yaoce_link*150,'g--');
legend('俯仰角','滚动角','航向角','遥测丢包','Location','NorthEastOutside');
title('副站:俯仰、滚动、航向 & 丢包图');
ylim([-180 180]);
hold off;
% print(img,'-dpng','-r800','2_1_飞行角度fu.png');
savefig(img,'2_1_飞行角度fu.fig'); clf(img);
hold off;
scatter3(fu_longitude_right,fu_latitude_right,fu_high_right,10,"blue");
hold on;
scatter3(fu_longitude_err,fu_latitude_err,fu_high_err,50,"red");
ylim([40.75 40.95]);
xlim([109 109.7]);
zlim([1200 2000]);
xlabel("longitude");ylabel("latitude");zlabel("high");
title('副站:飞行轨迹 & 丢包图');
hold off;
savefig(img,'2_2_轨迹与丢包fu.fig'); clf(img);
hold off;
scatter3(fu_longitude_right,fu_latitude_right,fu_high_right,1,"black");
hold on;
scatter3(fu_longitude_err,fu_latitude_err,fu_high_err,200,"red");
scatter3(zhu_longitude_err,zhu_latitude_err,zhu_high_err,50,"blue");
ylim([40.75 40.95]);
xlim([109 109.7]);
zlim([1200 2000]);
xlabel("longitude");ylabel("latitude");zlabel("high");
title('主副站:俯仰、滚动、航向 & 丢包图');
legend('轨迹图','副站丢包','主站丢包','Location','NorthEastOutside');
hold off;
savefig(img,'2_3_主副站轨迹与丢包.fig'); % 副站 丢包时刻的三个角度信息
fu_diubao_index = find(fu_remove_eth==1);
fu_diubao_pitch = [];
fu_diubao_yaw   = [];
fu_diubao_roll  = [];
fu_diubao_angle = [];
fu_diubao_jin = [];
fu_diubao_wei = [];
fu_diubao_gao = [];
j=1;
for i = fu_diubao_index'fu_diubao_pitch(j) = fu_angle_cabrage(i);fu_diubao_yaw(j)   = fu_angle_Heading(i);fu_diubao_roll(j)  = fu_angle_roll(i);fu_diubao_angle(j) = Angle_Antenna(i); fu_diubao_jin(j) = fu_longitude(i);fu_diubao_wei(j) = fu_latitude(i);fu_diubao_gao(j) = fu_positiong_high(i);j=j+1;
end% 主站 丢包时刻的三个角度信息
zhu_diubao_index = find(zhu_remove_eth==1);
zhu_diubao_pitch = [];
zhu_diubao_yaw   = [];
zhu_diubao_roll  = [];
zhu_diubao_angle = [];
j=1;
for i = zhu_diubao_index'zhu_diubao_pitch(j) = zhu_angle_cabrage(i);zhu_diubao_yaw(j)   = zhu_angle_Heading(i);zhu_diubao_roll(j)  = zhu_angle_roll(i);zhu_diubao_angle(j) = Angle_Antenna_zhu(i); j=j+1;
end% 副站 全数据点分析(包含起飞和降落阶段)
fu_all_analysis_pitch = fu_angle_cabrage(fu_remove_eth==1);
fu_all_analysis_yaw = fu_angle_Heading(fu_remove_eth==1);
fu_all_analysis_roll = fu_angle_roll(fu_remove_eth==1);
scatter3(fu_all_analysis_pitch,fu_all_analysis_yaw,fu_all_analysis_roll,100,"red");
xlabel("俯仰角 Pitch");ylabel("航向角 Yaw");zlabel("滚动角 Roll");
title('副站:全过程的俯仰、滚动、航向 & 丢包图');
savefig(img,'3_1_全数据姿态与丢包.fig'); % 副站 飞行数据点分析
fu_fly_pitch = fu_angle_cabrage(32727:148411);
fu_fly_yaw   = fu_angle_Heading(32727:148411);
fu_fly_roll  = fu_angle_roll(32727:148411);
fu_fly_remove= fu_remove_eth(32727:148411);
fu_fly_analysis_pitch = fu_fly_pitch(fu_fly_remove==1);
fu_fly_analysis_yaw   = fu_fly_yaw(fu_fly_remove==1);
fu_fly_analysis_roll  = fu_fly_roll(fu_fly_remove==1);
scatter3(fu_fly_analysis_pitch,fu_fly_analysis_yaw,fu_fly_analysis_roll,200,"blue");
xlabel("俯仰角 Pitch");ylabel("航向角 Yaw");zlabel("滚动角 Roll");
title('副站:飞行过程的俯仰、滚动、航向 & 丢包图');
savefig(img,'3_2_飞行数据与丢包.fig'); % 主站 全数据点分析(包含起飞和降落阶段)
zhu_all_analysis_pitch = zhu_angle_cabrage(zhu_remove_eth==1);
zhu_all_analysis_yaw = zhu_angle_Heading(zhu_remove_eth==1);
zhu_all_analysis_roll = zhu_angle_roll(zhu_remove_eth==1);
scatter3(zhu_all_analysis_pitch,zhu_all_analysis_yaw,zhu_all_analysis_roll,100,"red");
xlabel("俯仰角 Pitch");ylabel("航向角 Yaw");zlabel("滚动角 Roll");
title('主站:全过程的俯仰、滚动、航向 & 丢包图');
savefig(img,'3_3_全数据姿态与丢包.fig'); % 主站 飞行数据点分析
zhu_fly_pitch = zhu_angle_cabrage(32727:148411);
zhu_fly_yaw   = zhu_angle_Heading(32727:148411);
zhu_fly_roll  = zhu_angle_roll(32727:148411);
zhu_fly_remove= zhu_remove_eth(32727:148411);
zhu_fly_analysis_pitch = zhu_fly_pitch(zhu_fly_remove==1);
zhu_fly_analysis_yaw   = zhu_fly_yaw(zhu_fly_remove==1);
zhu_fly_analysis_roll  = zhu_fly_roll(zhu_fly_remove==1);
scatter3(zhu_fly_analysis_pitch,zhu_fly_analysis_yaw,zhu_fly_analysis_roll,200,"blue");
xlabel("俯仰角 Pitch");ylabel("航向角 Yaw");zlabel("滚动角 Roll");
title('主站:飞行过程的俯仰、滚动、航向 & 丢包图');
savefig(img,'3_4_飞行数据与丢包.fig'); % 主副站 全数据点分析(包含起飞和降落阶段)
scatter3(fu_all_analysis_pitch,fu_all_analysis_yaw,fu_all_analysis_roll,300,"red");
hold on;
scatter3(zhu_all_analysis_pitch,zhu_all_analysis_yaw,zhu_all_analysis_roll,100,"blue");
xlabel("俯仰角 Pitch");ylabel("航向角 Yaw");zlabel("滚动角 Roll");
legend('副站丢包','主站丢包','Location','NorthEastOutside');
title('主副站:全过程的俯仰、滚动、航向 & 丢包图');
savefig(img,'3_5_全数据姿态与丢包.fig'); 
hold off;% 主副站 飞行数据点分析
scatter3(fu_fly_analysis_pitch,fu_fly_analysis_yaw,fu_fly_analysis_roll,300,"red");
hold on;
scatter3(zhu_fly_analysis_pitch,zhu_fly_analysis_yaw,zhu_fly_analysis_roll,100,"blue");
xlabel("俯仰角 Pitch");ylabel("航向角 Yaw");zlabel("滚动角 Roll");
legend('副站丢包','主站丢包','Location','NorthEastOutside');
title('主副站:飞行过程的俯仰、滚动、航向 & 丢包图');
savefig(img,'3_6_飞行数据与丢包.fig'); 
hold off;% 副站 天线方向图
plot(fu_diubao_roll,fu_diubao_angle,'.');
xlabel("滚动角 Roll");ylabel("天线方向图角");
title('副站 天线方向图');
savefig(img,'4_1_副站天线方向图.fig'); % 副站 天线仰角与丢包 || 副站天线 俯仰角20度,10clf(img);
hold on;
plot(find(fu_remove_eth==1),fuyang_test(fu_remove_eth==1),'rs','LineWidth',2,'MarkerSize',5);
plot(find(fu_remove_eth==0),fuyang_test(fu_remove_eth==0),'b');
plot([0,length(fu_remove_eth)],[10,10],'linestyle','--','LineWidth',2);        % 天线波束范围
legend('丢包','不丢包','天线范围','Location','NorthEastOutside');
xlabel("飞行过程");ylabel("角度");
title('副站:地面与靶弹的俯仰角 丢包示意图');
savefig(img,'4_2_靶弹与副站天线仰角丢包示意图.fig'); 
hold off;% 主站 天线方向图
plot(zhu_diubao_roll,zhu_diubao_angle,'.');
xlabel("滚动角 Roll");ylabel("天线方向图角");
title('主站 天线方向图');
savefig(img,'4_3_主站天线方向图.fig'); 
hold off;% 主站 天线仰角与丢包 || 主站天线 H波束宽度33度,一半有16.5, 上翘9度,和起来有 25.5度 相对副站好
clf(img);
hold on;
plot(find(zhu_remove_eth==1),fuyang_test_zhu(zhu_remove_eth==1),'rs','LineWidth',2,'MarkerSize',5);
plot(find(zhu_remove_eth==0),fuyang_test_zhu(zhu_remove_eth==0),'b');
plot([0,length(zhu_remove_eth)],[25.5,25.5],'linestyle','--','LineWidth',2);        % 天线波束范围
legend('丢包','不丢包','天线范围','Location','NorthEastOutside');
xlabel("飞行过程");ylabel("角度");
title('主站:地面与靶弹的俯仰角 丢包示意图');
savefig(img,'4_4_靶弹与主站天线仰角丢包示意图.fig'); %% 数据统计与导出
FILENAMES = FILENAMES';
LOSS_YTJ  = LOSS_YTJ';
LOSS_RAD  = LOSS_RAD';
LOSS_ETH  = LOSS_ETH';
LOSS_YK   = LOSS_YK';writetable(table(FILENAMES,LOSS_YTJ,LOSS_RAD,LOSS_ETH,LOSS_YK, ...'VariableNames',["FILENAMES","LOSS_YTJ","LOSS_RAD","LOSS_ETH", ..."LOSS_YK"]),'丢包数据统计(一体机丢包-遥测链路丢包-地面网口丢包-遥控丢包).csv');fu_diubao_pitch = fu_diubao_pitch';
fu_diubao_yaw = fu_diubao_yaw';
fu_diubao_roll = fu_diubao_roll';
fu_diubao_angle = fu_diubao_angle';
fu_diubao_jin = fu_diubao_jin';
fu_diubao_wei = fu_diubao_wei';
fu_diubao_gao = fu_diubao_gao';writetable(table(fu_diubao_index,fu_diubao_pitch,fu_diubao_yaw,fu_diubao_roll, ...fu_diubao_angle, fu_diubao_jin,fu_diubao_wei, fu_diubao_gao, ...'VariableNames',["index","pitch","yaw","roll","angle","jin","wei","gao" ...]),'副站飞行过程中丢包与角度分析.csv');toc;%% 计算所需的函数
function UTC = ConvertNum2UTC(x)len = length(x);for i = 1:lenh =  fix(x(i)/1000/3600);m =  fix((x(i)/1000-h*3600)/60);s =  fix(x(i)/1000-h*3600-m*60);UTC(i) = string(h)+"h"+string(m)+"m"+string(s)+"s";endUTC=UTC';
endfunction Write_UTC_control(control,change,UTC,filename)len = length(change);j=1;LIST_CONTROL    = [""];LIST_UTC        = [""];LIST_INDEX      = [];for i=1:lenif(change(i)) == 1LIST_CONTROL(j) = dec2hex(control(i+1));LIST_UTC(j)     = UTC(i+1);LIST_INDEX(j)   = i;j=j+1;endendLIST_CONTROL = LIST_CONTROL';LIST_UTC = LIST_UTC';LIST_INDEX = LIST_INDEX';writetable(table(LIST_INDEX,LIST_CONTROL,LIST_UTC,'VariableNames',["index","control","utc"]),filename+'/指令切换与UTC时间.csv');
endfunction [Angle_Antenna,Length,fuyang_test] = Antenna_direction(local_j,local_w,aim_j,aim_w,high,yaw)%Angle_Antenna = Antenna_direction(109.621197,40.847384,fu_longitude,fu_latitude,fu_positiong_high,fu_angle_Heading)earthR      = 6371000000       ;%单位厘米local_j_hudu= local_j*pi/180;%角度与弧度local_w_hudu= local_w*pi/180;%角度与弧度aim_j_hudu  = aim_j.*pi/180  ;%角度与弧度aim_w_hudu  = aim_w.*pi/180  ;%角度与弧度V1=sin(aim_j_hudu-local_j_hudu).*cos(aim_w_hudu);V2=cos(local_w_hudu).*sin(aim_w_hudu) -sin(local_w_hudu).*cos(aim_w_hudu).*cos(aim_j_hudu-local_j_hudu);AB2=sin((local_w_hudu-aim_w_hudu)/2).*sin((local_w_hudu-aim_w_hudu)/2) + cos(local_w_hudu).*cos(aim_w_hudu).*sin((local_j_hudu-aim_j_hudu)/2).*sin((local_j_hudu-aim_j_hudu)/2);Length=2*earthR.*asin(sqrt(AB2))/1000;   %单位厘米 直线距离 Angle=atan2(V1,V2).*180./pi;        %该单位是-pi至pi,正值不变,需要将负值加上360°。而UB482是0360°与真北的夹角fuyang_test     =asin( abs((high - 1284))./sqrt((high - 1284).^2 + (Length).^2))./pi.*180;%假设地面天线架设5% 改变航向角的真北角定义 原始定义:顺时针为负。   % 计算天线方向图Angles        = - yaw - Angle;% 转化为0360Angles_360 = Angles;for i = 1:length(Angles_360)if(Angles_360(i) < 0)Angles_360(i) = Angles_360(i) + 360;elseif(Angles_360(i) > 360)Angles_360(i) = Angles_360(i) - 360;elseAngles_360(i) = Angles_360(i);endend% 转化为 -180+180Angles_zf_180 = Angles_360;for i = 1:length(Angles_zf_180)if(Angles_zf_180(i) > 180)Angles_zf_180(i) = Angles_zf_180(i) - 360;elseAngles_zf_180(i) = Angles_zf_180(i);endend% 转化为天线方向图Angle_Antenna = Angles_zf_180;for i = 1:length(Angle_Antenna)if(Angle_Antenna(i) >= 0)Angle_Antenna(i) = Angle_Antenna(i) - 180;elseAngle_Antenna(i) = Angle_Antenna(i) + 180;endend
end
function plot_k_means(pitch,yaw,roll,n)[idx,C] = kmeans([pitch;yaw;roll],n);disp(size(idx))for i = 1:nscatter3(pitch(idx==i),yaw(idx==i),roll(idx==i),".");hold on;endhold off;
end

相关文章:

画图,matlab,

clear;close all;clc;tic;dirOutput dir(*.dat); % 罗列所有后缀-1.dat的文件列表&#xff0c;罗列BDDATA的数据 filenames string({dirOutput.name}); % 提取文件名%% 丢包统计 FILENAMES [""]; LOSS_YTJ [ ]; LOSS_RAD [ ]; LOSS_ETH [ ]…...

Java虚拟机类加载(解析阶段)[虚方法表的生成以及其存在意义]

class字节码文件中的常量池结构详解-CSDN博客Java虚拟机类加载(解析阶段)-CSDN博客...

电子元器件与电路之-MOS管的介绍和作用

一、基本概念 MOS 管&#xff0c;或MOSFET&#xff0c;全称是Metal-Oxide-Semiconductor Field-Effect Transistor&#xff08;金属 - 氧化物 - 半导体场效应晶体管&#xff09;。和三极管利用电流控制电流不同&#xff0c;它是一种利用电场效应来控制电流的半导体器件。和三级…...

python实现word转html

目录 使用mammoth库 使用spire.doc库 使用mammoth库 mammoth库支持将word转为HTML和markdown格式的文件。 import mammothdef word_html(word_file):html_save_name fr{word_file.split(.)[0]}.htmlwith open(word_file, rb) as f:data mammoth.convert_to_html(f)with o…...

nginx模块ngx-fancyindex 隐藏标题中的 / 和遇到的坑

首先下载nginx源码&#xff0c;编译时加上 --add-module/usr/local/src/ngx-fancyindex/ 例如 &#xff1a; ./configure --prefix/usr/local/nginx --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module…...

第二十四天 循环神经网络(RNN)LSTM与GRU

LSTM&#xff08;长短期记忆网络&#xff09;和GRU&#xff08;门控循环单元&#xff09;是两种流行的循环神经网络变体&#xff0c;它们被设计来解决传统RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题。这两种网络都通过引入门控机制来控制信息的流动&#xff0c;从而能…...

RocketMQ如何保证消息顺序?

大家好&#xff0c;我是锋哥。今天分享关于【RocketMQ如何保证消息顺序?】面试题。希望对大家有帮助&#xff1b; RocketMQ如何保证消息顺序? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RocketMQ 作为一个分布式消息中间件&#xff0c;提供了高吞吐、低延迟的…...

LabVIEW实现GSM/GPRS通信

目录 1、GSM/GPRS通信原理 2、硬件环境部署 3、程序架构 4、前面板设计 5、程序框图设计 6、测试验证 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利用LabVIEW和常用模块实现物联…...

关于如何做技术文档

在技术的浩瀚海洋中&#xff0c;一份优秀的技术文档宛如精准的航海图。它是知识传承的载体&#xff0c;是团队协作的桥梁&#xff0c;更是产品成功的幕后英雄。然而&#xff0c;打造这样一份出色的技术文档并非易事。你是否在为如何清晰阐释复杂技术而苦恼&#xff1f;是否纠结…...

基于多尺度动态卷积的图像分类

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

RK3576 介绍

RK3576 介绍 1 介绍1.1 概述1.2 RK3576、RK3588、RK3568 和 RK3399 的参数对比 2 DataSheet2.1 RK35762.2 RK35882.3 RK35682.4 RK3399 参考 1 介绍 1.1 概述 ARM 64位高性能八核通用处理器&#xff0c;丰富的PCIE/USB3.0/SATA/GMAC等各类高速及CAN FD/DSMC/UART/SPI/I2C/I3C…...

如何评估并持续优化AI呼出机器人的使用效果

如何评估并持续优化AI呼出机器人的使用效果 作者&#xff1a;开源呼叫中心FreeIPCC 随着人工智能技术的发展&#xff0c;AI呼出机器人在企业中的应用越来越广泛。这些智能系统不仅提高了工作效率、降低了成本&#xff0c;还改善了客户体验。然而&#xff0c;要确保AI呼出机器…...

Ubuntu上如何部署Nginx?

环境&#xff1a; Unbuntu 22.04 问题描述&#xff1a; Ubuntu上如何部署Nginx&#xff1f; 解决方案&#xff1a; 在Ubuntu上部署Nginx是一个相对简单的过程&#xff0c;以下是详细的步骤指南。我们将涵盖安装Nginx、启动服务、配置防火墙以及验证安装是否成功。 1. 更新…...

制造业4.0:AI与机器人如何重塑生产线

引言&#xff1a;从传统到未来的转型 在轰鸣的生产线上&#xff0c;传统制造业曾以规模化生产和成本效益为核心竞争力&#xff0c;推动了全球工业化进程。然而&#xff0c;面对现代市场的多样化需求和激烈竞争&#xff0c;这种模式正暴露出越来越多的局限性&#xff1a;产能过剩…...

ChatGPT与领域特定语言的集成

用ChatGPT做软件测试 领域特定语言&#xff08;Domain-Specific Language&#xff0c;DSL&#xff09;是一种编程语言&#xff0c;专门设计用于满足特定领域或问题领域的需求。它是一种定制的语言&#xff0c;通常包括特定领域的专业术语以及相应的语法规则。DSL的设计旨在让领…...

【记录50】uniapp安装uview插件,样式引入失败分析及解决

SassError: Undefined variable: "$u-border-color". 表示样式变量$u-border-color没定义&#xff0c;实际是定义的 首先确保安装了scss/sass 其次&#xff0c;根目录下 app.vue中是否全局引入 <style lang"scss">import /uni_modules/uview-ui/in…...

【WPF】把DockPanel的内容生成图像

要在WPF中将一个 DockPanel 的内容生成为图像并保存&#xff0c;可以按照与之前类似的步骤进行&#xff0c;但这次我们将专注于 DockPanel 控件而不是整个窗口。 DockPanel的使用 WPF&#xff08;Windows Presentation Foundation&#xff09;中的 DockPanel 是一种布局控件&…...

买卖股票的最佳时机 - 合集

************* C 买卖股票问题合集 ************* Since I have finished some stocks problems. I wanna make a list of the stocks to figure out the similarities. Here is the storks topucs list, from easy to hard: 121. 买卖股票的最佳时机 - 力扣&#xff08;L…...

lshw学习——简单介绍

文章目录 简介核心结构扫描设备原理scan_abiscan_burnerscan_cdromscan_cpufreqscan_cpuidscan_cpuinfoscan_device_treescan_diskscan_displayscan_dmiscan_fatscan_fbscan_graphicsscan_idescan_ideraidscan_inputscan_isapnpscan_lvmscan_memoryscan_mmcscan_mountsscan_net…...

深入理解Kafka:核心设计与实践原理读书笔记

目录 初识Kafka基本概念安装与配置ZooKeeper安装与配置Kafka的安装与配置 生产与消费服务端参数配置 生产者客户端开发消息对象 ProducerRecord必要的参数配置发送消息序列化分区器生产者拦截器 原理分析整体架构元数据的更新 重要的生产者参数acksmax.request.sizeretries和re…...

OnOn-WebSsh (昂~昂~轻量级WebSSH) 可实现 网页 中的 ssh 客户端操作,支持多用户多线程操作 ssh 持久化

OnOn-WebSsh springBoot 服务器 开源技术栏 OnOn-WebSsh (昂昂轻量级WebSSH) 可实现 网页 中的 ssh 客户端操作&#xff0c;支持多用户多线程操作 支持指定ssh 连接, 支持sftp 以及 ssh 持久化. OnOn-WebSSH (OnOn Lightweight WebSSH) enables SSH client operations withi…...

LDP+LBP代码解析及应用场景分析

代码整体结构与功能概述 这段 C 代码主要实现了两个图像特征提取算法&#xff0c;分别是局部方向模式&#xff08;Local Directional Pattern&#xff0c;LDP&#xff09;和多分块局部二值模式&#xff08;Multi-Block Local Binary Pattern&#xff0c;Multi-Block LBP&#…...

51c视觉~合集33

我自己的原文哦~ https://blog.51cto.com/whaosoft/12163849 #Robin3D 3D场景的大语言模型&#xff1a;在鲁棒数据训练下的3DLLM新SOTA! 论文地址&#xff1a;https://arxiv.org/abs/2410.00255代码将开源&#xff1a;https://github.com/WeitaiKang/Robin3D 介绍 多模态…...

element plus的table组件,点击table的数据是,会出现一个黑色边框

在使用 Element Plus 的 Table 组件时&#xff0c;如果你点击表格数据后出现了一个黑色边框&#xff0c;这通常是因为浏览器默认的焦点样式&#xff08;outline&#xff09;被触发了。如图&#xff1a; 你可以通过自定义 CSS 来隐藏这个黑色边框&#xff0c;代码如下&#xff1…...

springmvc的拦截器,全局异常处理和文件上传

拦截器: 拦截不符合规则的&#xff0c;放行符合规则的。 等价于过滤器。 拦截器只拦截controller层API接口。 如何定义拦截器。 定义一个类并实现拦截器接口 public class MyInterceptor implements HandlerInterceptor {public boolean preHandle(HttpServletRequest reque…...

【coredump】笔记

coredump 是什么&#xff1f;最标准的解释是什么&#xff1f; Core dump&#xff08;也称为 core 文件或 core dump 文件&#xff09;是计算机程序在运行时崩溃时生成的文件&#xff0c;它捕获了程序在崩溃时的内存状态。这些文件通常用于调试目的&#xff0c;以帮助开发人员分…...

【Linux】磁盘空间莫名消失,找不到具体原因的思路

磁盘空间莫名消失&#xff0c;找不到具体原因的思路 先说下常见的几种原因&#xff1a; 1、删除的文件未释放空间 2、日志或过期文件未及时清理 3、inode导致 4、隐藏文件夹或者目录 6、磁盘碎片 最后一种单独介绍。 环境&#xff1a;情况是根分区&#xff08;/&#xf…...

智能体实战(需求分析助手)一、需求概述及迭代规划

需求分析助手开发迭代规划 功能概述 需求分析助手是一款基于大模型的智能系统,旨在帮助用户高效完成需求获取、需求分析、需求文档编写及需求验证的全流程工作。通过对用户输入的智能处理和分析,需求分析助手能够简化需求管理流程,并根据不同业务场景提供定制化支持。 核心…...

idea | maven项目标红解决方案 | 强制刷新所有依赖

场景&#xff1a;父pom多模块&#xff0c;新增时&#xff0c;依赖正常&#xff0c;但是application.yml看起来没被springboot识别&#xff0c;试过rebuild、重开idea清除缓存&#xff0c;重新maven面板reload all maven projects, 试过pom文件的依赖先移除再重新粘贴导入进来&a…...

*【每日一题 基础题】 [蓝桥杯 2023 省 B] 飞机降落

题目描述 N 架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 Ti 时刻到达机场上空&#xff0c;到达时它的剩余油料还可以继续盘旋 Di 个单位时间&#xff0c;即它最早可以于 Ti 时刻开始降落&#xff0c;最晚可以于 Ti Di 时刻开始降落。降落过程需要 Li个单位时间…...