一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【雷达通信】基于matlab GUI多算法雷达一维恒虚警检测CFAR【含Matlab源码 874期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、简介

1 内容简介
利用MATLAB GUI设计平台,设计多算法雷达一维恒虚警检测CFAR可视化界面,通过选择噪声类型、目标类型、算法类型,手动输入相关参数,可视化显示噪声波形与目标检测的回波-检测门限波形图。

2 原理简介
恒虚警检测技术(CFAR)是指雷达系统在保持虚警概率恒定条件下对接收机输出的信号与噪声作判别以确定目标信号是否存在的技术。
前提:由于接收机输出端中肯定存有噪声(包括大气噪声、人为噪声、内部噪声和杂波等),而信号一般是叠加在噪声上的。这就需要在接收机输出的噪声或信号加噪声条件下,采用检测技术判别是否有目标信号。
误差概率:任何形式的判决必然存在着两种误差概率:发现概率和虚警概率。当接收机输出端存在目标回波信号,而判决时判为有目标的概率为Pd,判为无目标的概率为1-Pad。当接收机输出端只有噪声时,而判为有目标的概率为Pfa。由于噪声是随机变量,其特征可用概率密度函数表示,因此信号加噪声也是一随机变量
具体过程:恒虚警检测器首先对输入的噪声进行处理后确定一个门限,将此门限与输入端信号相比,如输入端信号超过了此门限,则判为有目标,否则,判为无目标。
算法:①均值类CFRA:核心思想是通过对参考窗内采样数据取平均来估计背景功率。CA-CFAR(单元平均恒虚警)、GO-CFAR(最大选择恒虚警)、SO-CFAR(最小选择恒虚警)算法这三个是最经典的均值类CFAR算法。
②统计有序CFAR:核心思想:通过对参考窗内的数据由小到大排序选取其中第K个数值假设其为杂波背景噪声。OS-CFAR(有序统计恒虚警)为其经典算法。

3 实现功能

实现的功能有:
3.1 类型选择:
① 噪声类型:均匀背景噪声和杂波边缘背景噪声。均匀背景噪声为单一功率的噪声,在参数输入界面输入噪声功率2,噪声长度2,噪声方差即可(噪声功率1、噪声长度1被禁用);杂波边缘背景噪声为两种不同功率噪声的组合,需要分别输入噪声1和噪声2的功率与长度,方差两噪声共用。
②目标类型:单目标与多目标。选择单目标时只需输入目标1的信噪比与位置即可(其他目标被禁用);选择多目标时,需要分别输入目标1-4的信噪比与位置,其中当噪声类型为杂波边缘背景噪声时,还需分别输入靠近杂波边缘与杂波内目标的信噪比与位置,便于区别对比。
③算法类型:CA-CFAR、GO-CFAR、SO-CFAR、OS-CFAR,四种算法任选一种即可。

3.2 产生噪声&噪声波形图:完成噪声类型选择与噪声参数输入后,单击产生噪声按钮即可产生噪声波形图,在左下方进行显示。

3.3 参数输入:① 噪声功率1/2:噪声功率大小,单位db,变量名为db1、db2。
②噪声长度1/2:噪声的长度,其中噪声长度2为噪声总长(包括了噪声长度1),变量名为shape1、shape2。
③噪声方差:两段噪声共用的方差,变量名为varience。
④信噪比1/2/3/4/5/6:每个目标的信噪比,变量名为SNR1/2/3/4/5/6。
⑤目标位置1/2/3/4、杂波边缘位置,杂波内位置:各目标位置,需要小于最大噪声长度,其中杂波边缘位置应为两段噪声交界处,杂波内位置应在杂波内,变量名为des1/2/3/4/5/6。
⑥单元数目:总检测单元个数,变量名为N。
⑦保护单元数目:目标的功率可能泄露到相邻的单元中,所以和目标相邻的数个单元不作为背景杂波的估计,作为保护单元,变量名为pro_N。
⑧虚警概率:恒虚警检测保持的错误检测概率,变量名为PAD。

3.4 输出结果&回波-检测门限关系图:产生噪声,输入目标参数,选择算法后,单击输出结果按钮,即可在右侧得到回波-检测门限关系图。

3.5 左/右图导出:分别将噪声波形图与回波-检测门限关系图导出保存,可选的格式有jpg、png、bmp、eps。

4 操作实例
选取噪声类型为“杂波边缘背景噪声”,目标类型为多目标,算法类型选择CA-CFAR,参数输入为默认输入(噪声功率1/2:20db、30db;噪声长度1/2:100、200;噪声方差:200;信噪比1/2/3/4/5/6:15、12、8、5、5、5;目标位置1/2/3/4、杂波边缘位置、杂波内位置:30、40、50、60、95、120;单元个数:36;保护单元个数:2;虚警概率:0.001),得到结果如下图所示:从回波-检测门限图可以看出,该算法在低噪声环境中目标检测性能良好,实现恒虚警检测,但在杂波边缘与杂波内部检测性能显著下降。

5 算法与参数分析
算法分析:
CA-CFAR:优点:损失率最少的一种算法;
缺点:多目标遮掩,杂波边缘性能也欠佳;
GO-CFAR:优点:杂波边缘区域虚警概率降低
缺点:多目标遮掩
SO-CFAR: 优点:多目标效果有改进;
缺点:杂波边缘区域虚警概率提升;
OS-CFAR:优点:多目标检测性能很好;
缺点:杂波边缘区域虚警概率提高;
参数分析:
检测单元数:在相同信噪比下,检测单元数越多的CFAR对应的检测概率越高,但同时计算量加大。
虚警概率:在相同检测单元数目下,虚警概率的越高CFAR对应的检测概率越高,但虚警数也增多。
信噪比:当信噪比不断增加,检测概率也不断增加。
保护单元数:保护单元过大或过小都会使检测概率降低,应不同实验选取适中的保护单元数。

三、部分源代码

function varargout = cfar(varargin)
%CFAR MATLAB code file for cfar.fig
%      CFAR, by itself, creates a new CFAR or raises the existing
%      singleton*.
%
%      H = CFAR returns the handle to a new CFAR or the handle to
%      the existing singleton*.
%
%      CFAR('Property','Value',...) creates a new CFAR using the
%      given property value pairs. Unrecognized properties are passed via
%      varargin to cfar_OpeningFcn.  This calling syntax produces a
%      warning when there is an existing singleton*.
%
%      CFAR('CALLBACK') and CFAR('CALLBACK',hObject,...) call the
%      local function named CALLBACK in CFAR.M with the given input
%      arguments.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help cfar% Last Modified by GUIDE v2.5 12-May-2020 18:48:44% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...'gui_Singleton',  gui_Singleton, ...'gui_OpeningFcn', @cfar_OpeningFcn, ...'gui_OutputFcn',  @cfar_OutputFcn, ...'gui_LayoutFcn',  [], ...'gui_Callback',   []);
if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});
endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
elsegui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT% --- Executes just before cfar is made visible.
function cfar_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   unrecognized PropertyName/PropertyValue pairs from the
%            command line (see VARARGIN)% Choose default command line output for cfar
handles.output = hObject;% Update handles structure
guidata(hObject, handles);% UIWAIT makes cfar wait for user response (see UIRESUME)
% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.
function varargout = cfar_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Get default command line output from handles structure
varargout{1} = handles.output;% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global noise_p;
global xc;
axes(handles.axes5);
if get(handles.radiobutton4,'value')
shape1=get(handles.edit9,'string');
shape1=str2double(shape1);
shape2=get(handles.edit10,'string');
shape2=str2double(shape2);
db1=get(handles.edit1,'string');
db1=str2double(db1);
db2=get(handles.edit8,'string');
db2=str2double(db2);
shape=[shape1,shape2];
variance=get(handles.edit2,'string');
variance=str2double(variance);
noise_db=[db1,db2];
noise_p=10.^(noise_db./10);
show_out=1;
[ xc ] = env_edge(variance,  shape, noise_db,show_out);
end
if get(handles.radiobutton3,'value')shape1=get(handles.edit10,'string');
shape1=str2double(shape1);
variance=get(handles.edit2,'string');
variance=str2double(variance);
db1=get(handles.edit1,'string');
db1=str2double(db1);
noise_p=10.^(db1./10);
show_out=1;
[ xc ] = env_uniform(variance,  shape1, db1,show_out);end
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global noise_p;
global xc;
if get(handles.radiobutton3,'value')&&get(handles.radiobutton1,'value')
SNR1=get(handles.edit4,'string');
SNR1=str2double(SNR1);
signal1_p=10.^(SNR1./10).*noise_p;
des1=get(handles.edit15,'string');
des1=str2double(des1);
xc(1,des1)=signal1_p;
N=get(handles.edit13,'string');
N=str2double(N);
pro_N=get(handles.edit7,'string');
pro_N=str2double(pro_N);
PAD=get(handles.edit14,'string');
PAD=str2double(PAD);
k=2.*N./4;
if get(handles.radiobutton5,'value')&&get(handles.radiobutton1,'value')
[ index, XT ] = cfar_ac( xc, N, pro_N, PAD);
end
if get(handles.radiobutton6,'value')&&get(handles.radiobutton1,'value')[ index, XT ] = cfar_go( xc, N, pro_N, PAD);
end
if get(handles.radiobutton7,'value')&&get(handles.radiobutton1,'value')[ index, XT ] = cfar_os( abs(xc), N, k, pro_N, PAD);
end
if get(handles.radiobutton8,'value')&&get(handles.radiobutton1,'value')[ index, XT ] = cfar_so( xc, N, pro_N, PAD);
end
end
if get(handles.radiobutton4,'value')&&get(handles.radiobutton1,'value')
SNR1=get(handles.edit4,'string');
SNR1=str2double(SNR1);
signal1_p=10.^(SNR1./10).*noise_p(1,end);
des1=get(handles.edit15,'string');
des1=str2double(des1);
xc(1,des1)=signal1_p;
N=get(handles.edit13,'string');
N=str2double(N);
pro_N=get(handles.edit7,'string');
pro_N=str2double(pro_N);
PAD=get(handles.edit14,'string');
PAD=str2double(PAD);
k=2.*N./4;
if get(handles.radiobutton5,'value')&&get(handles.radiobutton1,'value')
[ index, XT ] = cfar_ac( xc, N, pro_N, PAD);
end
if get(handles.radiobutton6,'value')&&get(handles.radiobutton1,'value')[ index, XT ] = cfar_go( xc, N, pro_N, PAD);
end
if get(handles.radiobutton7,'value')&&get(handles.radiobutton1,'value')[ index, XT ] = cfar_os( abs(xc), N, k, pro_N, PAD);
end
if get(handles.radiobutton8,'value')&&get(handles.radiobutton1,'value')[ index, XT ] = cfar_so( xc, N, pro_N, PAD);
end
end
if get(handles.radiobutton3,'value')&&get(handles.radiobutton2,'value')
SNR1=get(handles.edit4,'string');
SNR1=str2double(SNR1);
SNR2=get(handles.edit5,'string');
SNR2=str2double(SNR2);
SNR3=get(handles.edit11,'string');
SNR3=str2double(SNR3);
SNR4=get(handles.edit12,'string');
SNR4=str2double(SNR4);
signal1_p=10.^(SNR1./10).*noise_p;
signal2_p=10.^(SNR2./10).*noise_p;
signal3_p=10.^(SNR3./10).*noise_p;
signal4_p=10.^(SNR4./10).*noise_p;
des1=get(handles.edit15,'string');
des1=str2double(des1);
des2=get(handles.edit16,'string');
des2=str2double(des2);
des3=get(handles.edit17,'string');
des3=str2double(des3);
des4=get(handles.edit18,'string');
des4=str2double(des4);
xc(1,des1)=signal1_p;
xc(1,des2)=signal2_p;
xc(1,des3)=signal3_p;
xc(1,des4)=signal4_p;
N=get(handles.edit13,'string');
N=str2double(N);
pro_N=get(handles.edit7,'string');
pro_N=str2double(pro_N);
PAD=get(handles.edit14,'string');
PAD=str2double(PAD);
k=2.*N./4;
if get(handles.radiobutton5,'value')&&get(handles.radiobutton2,'value')
[ index, XT ] = cfar_ac( xc, N, pro_N, PAD);
end
if get(handles.radiobutton6,'value')&&get(handles.radiobutton2,'value')[ index, XT ] = cfar_go( xc, N, pro_N, PAD);
end
if get(handles.radiobutton7,'value')&&get(handles.radiobutton2,'value')[ index, XT ] = cfar_os( abs(xc), N, k, pro_N, PAD);
end
if get(handles.radiobutton8,'value')&&get(handles.radiobutton2,'value')[ index, XT ] = cfar_so( xc, N, pro_N, PAD);
end
end
if get(handles.radiobutton4,'value')&&get(handles.radiobutton2,'value')
SNR1=get(handles.edit4,'string');
SNR1=str2double(SNR1);
SNR2=get(handles.edit5,'string');
SNR2=str2double(SNR2);
SNR3=get(handles.edit11,'string');
SNR3=str2double(SNR3);
SNR4=get(handles.edit12,'string');
SNR4=str2double(SNR4);
SNR5=get(handles.edit19,'string');
SNR5=str2double(SNR5);
SNR6=get(handles.edit20,'string');
SNR6=str2double(SNR6);
signal1_p=10.^(SNR1./10).*noise_p(1,end);
signal2_p=10.^(SNR2./10).*noise_p(1,end);
signal3_p=10.^(SNR3./10).*noise_p(1,end);
signal4_p=10.^(SNR4./10).*noise_p(1,end);
signal5_p=10.^(SNR4./10).*noise_p(1,end);
signal6_p=10.^(SNR4./10).*noise_p(1,end);
des1=get(handles.edit15,'string');
des1=str2double(des1);
des2=get(handles.edit16,'string');
des2=str2double(des2);
des3=get(handles.edit17,'string');
des3=str2double(des3);
des4=get(handles.edit18,'string');
des4=str2double(des4);
des5=get(handles.edit21,'string');
des5=str2double(des5);
des6=get(handles.edit22,'string');
des6=str2double(des6);
xc(1,des1)=signal1_p;
xc(1,des2)=signal2_p;
xc(1,des3)=signal3_p;
xc(1,des4)=signal4_p;
xc(1,des5)=signal5_p;
xc(1,des6)=signal6_p;
N=get(handles.edit13,'string');
N=str2double(N);
pro_N=get(handles.edit7,'string');
pro_N=str2double(pro_N);
PAD=get(handles.edit14,'string');
PAD=str2double(PAD);
k=2.*N./4;
if get(handles.radiobutton5,'value')&&get(handles.radiobutton2,'value')
[ index, XT ] = cfar_ac( xc, N, pro_N, PAD);
end
if get(handles.radiobutton6,'value')&&get(handles.radiobutton2,'value')[ index, XT ] = cfar_go( xc, N, pro_N, PAD);
end
if get(handles.radiobutton7,'value')&&get(handles.radiobutton2,'value')[ index, XT ] = cfar_os( abs(xc), N, k, pro_N, PAD);
end
if get(handles.radiobutton8,'value')&&get(handles.radiobutton2,'value')[ index, XT ] = cfar_so( xc, N, pro_N, PAD);
end
end
axes(handles.axes2);
cla reset
if get(handles.radiobutton1,'value')
plot(10.*log(abs(xc))./log(10)),hold on;
plot(des1,10.*log(abs(xc(1,des1)))./log(10),'r*',  'LineWidth',10),hold on;plot(index,10.*log(abs(XT))./log(10),'g');
legend('回波','目标','检测门限')end
if get(handles.radiobutton2,'value')&&get(handles.radiobutton3,'value')plot(10.*log(abs(xc))./log(10)),hold on;
plot(des1,10.*log(abs(xc(1,des1)))./log(10),'r*',  'LineWidth',10),hold on;
plot(des2,10.*log(abs(xc(1,des2)))./log(10),'r*',  'LineWidth',10),hold on;
plot(des3,10.*log(abs(xc(1,des3)))./log(10),'r*',  'LineWidth',10),hold on;
plot(des4,10.*log(abs(xc(1,des4)))./log(10),'r*',  'LineWidth',10),hold on;
plot(index,10.*log(abs(XT))./log(10),'g');
legend('回波','目标','目标','目标','目标','检测门限')
end
if get(handles.radiobutton2,'value')&&get(handles.radiobutton4,'value')plot(10.*log(abs(xc))./log(10)),hold on;
plot(des1,10.*log(abs(xc(1,des1)))./log(10),'r*',  'LineWidth',10),hold on;plot(des2,10.*log(abs(xc(1,des2)))./log(10),'r*',  'LineWidth',10),hold on;
plot(des3,10.*log(abs(xc(1,des3)))./log(10),'r*',  'LineWidth',10),hold on;
plot(des4,10.*log(abs(xc(1,des4)))./log(10),'r*',  'LineWidth',10),hold on;plot(des5,10.*log(abs(xc(1,des5)))./log(10),'y*',  'LineWidth',10),hold on;plot(des6,10.*log(abs(xc(1,des6)))./log(10),'b*',  'LineWidth',10),hold on;plot(index,10.*log(abs(XT))./log(10),'g');legend('回波','目标','目标','目标','目标','杂波边缘目标','杂波内目标','检测门限')
endfunction edit1_Callback(hObject, eventdata, handles)
% hObject    handle to edit1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit1 as text
%        str2double(get(hObject,'String')) returns contents of edit1 as a double

四、运行结果

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.
[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.
[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.
[4]李树锋.基于完全互补序列的MIMO雷达与5G MIMO通信[M].清华大学出版社.2021
[5]何友,关键.雷达目标检测与恒虚警处理(第二版)[M].清华大学出版社.2011

【雷达通信】基于matlab GUI多算法雷达一维恒虚警检测CFAR【含Matlab源码 874期】相关推荐

  1. 【ACO三维路径规划】基于matlab蚁群算法水下潜器三维路径规划【含matlab源码 043期】

    一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...

  2. python机器学习之基于内容的推荐算法中推荐麻辣香锅菜品实战(附源码)

    需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 推荐算法相信大家都不陌生,日常生活的各种APP都会根据你的喜好和特征来给你推荐,接下来详细介绍一下其中的基于内容的推荐算法 基于内容的模式起源于信 ...

  3. 【数据结构与算法】内部排序之三:堆排序(含完整源码)

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/20227303 前言 堆排序.快速排序.归并排序(下篇会写这两种排序算法)的平均时间复杂度都 ...

  4. 【图像加密】基于matlab GUI Logistic+Tent+Kent+Henon图像加密与解密【含Matlab源码 1745期】

    ⛄一.混沌系统简介 0 引言 随着通讯技术的飞速发展, 越来越多的领域需要传送数字图像信号, 因此信息的传送安全问题显得越来越重要.通常应用于数字图像通信的两种保护技术为:数字水印技术和图像加密技术. ...

  5. 【车牌识别】基于matlab GUI BP神经网络车牌识别(带面板)【含Matlab源码 790期】

    ⛄一.BP车牌识别简介(附课程作业报告) 车牌识别系统设计与实现 车牌识别系统主要分为三部分:车牌图像预处理.特征提取以及基于BP神经网络对特征进行训练和分类,流程图如图1所示. 图1 车牌识别系统组 ...

  6. 【LSSVM回归预测】基于matlab人工蜂群算法优化最小二乘支持向量机LSSVM数据回归预测【含Matlab源码 2213期】

    ⛄一.人工蜂群算法优化最小二乘支持向量机LSSVM简介 1 最小二乘支持向量机 最小二乘支持向量机是支持向量机的一种改进算法[9,10],它将SVM算法中的不等式约束转化为等式约束,采用最小二乘线性系 ...

  7. 【路径规划】基于matlab蚁群算法机器人大规模栅格地图最短路径规划【含Matlab源码 1860期】

    ⛄一.蚁群算法及栅格地图简介 随着机器人技术在诸多领域的应用, 如机器人协作焊接.灾后搜救.军事.太空探索.深海勘探.家用和服务行业等, 机器人的发展正向智能化方向延伸, 要求其具有自组织.自学习.自 ...

  8. 【车牌识别】基于matlab GUI阈值分割车牌识别(带面板)【含Matlab源码 721期】

    ⛄一.车牌识别简介 1 车牌图像处理 车牌图像处理主要有五个组成部分:图像灰度化.图像二值化.图像边缘检测.图像形态学运算和图像滤波处理.它是车牌识别系统中最根本且最基础的操作,车牌图像处理的好坏情况 ...

  9. 【LEACH协议】基于matlab蝴蝶优化算法WSN安全分簇路由设计【含Matlab源码 2567期】

    ⛄一.蝴蝶优化算法(MBO)简介 1 介绍 蝴蝶优化算法(butterfly optimization algorithm, BOA)是Arora 等人于2019年提出的一种元启发式智能算法.该算法受 ...

  10. 【药材识别】基于matlab GUI SVM色差色温判断药材炮制程度系统【含Matlab源码 2241期】

    ⛄一.SVM色差色温判断药材炮制程度系统简介 本课题来源于"十二五"国家科技支撑计划项目(2012BAI29B11).颜色是中药质量标准中性状评价极为重要的内容,但传统的中药颜色检 ...

最新文章

  1. 通过T-SQL语句实现数据库加解密功能
  2. 【POJ1509】Glass Beads 【后缀自动机】
  3. 网站建设——从无到有
  4. RabbitMQ系列(一)RabbitMQ在Ubuntu上的环境搭建
  5. 7-8 菲波那契数列 (15 分)
  6. 信息管理系统界面html_西宁市小升初信息管理系统http://221.207.8.71/
  7. javascript版购物网站图片轮转
  8. unix操作系统图标大全
  9. OJ(Online Judge)系统及ACM测试题库大全
  10. windows驱动加载顺序
  11. 三星android驱动程序错误,android系统的三星手机插入电脑无法识别
  12. Redis的下载安装
  13. [转载]淘宝技术发展
  14. 表单的 9 种设计技巧【上】
  15. Android 设置桌面背景
  16. Python函数命名-PEP8编码规范的说明及IDE提示的忽略
  17. 利用matlab M_Map工具制作GPS测站分布图
  18. 天使投资人徐小平:最爱理性狂热创业者
  19. 浅谈操作系统OS与计算机软硬件体系结构,自顶贯穿性与行为回归硬件性
  20. linux u盘文件乱码,轻松解决Linux下U盘乱码的方法

热门文章

  1. iovec结构体定义及使用 (转)
  2. wpf Content数据绑定StringFormat起作用的原理和解决(转)
  3. iOS 静态库,动态库与 Framework 浅析
  4. 兴趣爱好-常用的10种算法
  5. mac 下安装android studio(转)
  6. JavaScript自学笔记 第5次
  7. 用Python将一个文件夹下多个子文件夹中相同文件拷贝到同一个文件夹中并重新命名
  8. Benefits of 3D CAD Modeling for Today’s Mechanical Engineer
  9. 190313每日一句
  10. OpenCV + VS + Python