数据融合技术

更多代码可参考以下链接(UKF,EKF,PF,联邦卡尔曼滤波)

https://github.com/Changjing-Liu/Data_Fusion_Course

文章目录

  • 数据融合技术
  • 1 方法概述
    • 1.1 基本卡尔曼滤波
    • 1.2 常值增益卡尔曼滤波
    • 1.3 平方根卡尔曼滤波
    • 1.4 带遗忘因子的卡尔曼滤波
    • 1.5 自适应卡尔曼滤波
    • 1.6 限制k减小的卡尔曼滤波
    • 1.7 扩大P的卡尔曼滤波
  • 2 实验
    • 2.1基本与常值增益对比
    • 2.2 基本卡尔曼滤波与平方根卡尔曼滤波对比
    • 2.3 抑制滤波发散

1 方法概述

卡尔曼滤波本质上是一种最优化方法,它的优化目标是使得被估计量的均方误差最小。卡尔曼滤波主要分为状态预测和测量更新两部分。


1.1 基本卡尔曼滤波

function Xkf=kalman(Xkf,u,Z,H,P0,Q,R,phi,Tau,N)%% 基本离散kalman滤波for i=2:NXn=phi*Xkf(:,i-1)+Tau*u;%预测P1=phi*P0*phi'+Q;%预测误差协方差K=P1*H'*(H*P1*H'+R)^(-1);%增益Xkf(:,i)=Xn+K*(Z(:,i)-H*Xn);%状态更新P0=(eye(2)-K*H)*P1;             %滤波误差协方差更新end
end

1.2 常值增益卡尔曼滤波

function Xkf=kalman_gainfix(Xkf,u,Z,H,P0,Q,R,phi,Tau,N)
%% 常值增益kalman滤波
K=[0.5;0.1];
for i=2:NXn=phi*Xkf(:,i-1)+Tau*u;%预测P1=phi*P0*phi'+Q;%预测误差协方差
%     K=P1*H'*(H*P1*H'+R)^(-1);%增益Xkf(:,i)=Xn+K*(Z(:,i)-H*Xn);%状态更新P0=(eye(2)-K*H)*P1;             %滤波误差协方差更新
end

1.3 平方根卡尔曼滤波

function Xkf=kalman_sqrt(Xkf,u,Z,H,P0,Q,R,Phi,Tau,N)
sQ = mychol(Q); sR = mychol(R); Delta0 = mychol(P0);
%% 平方根kalman滤波for i=2:N%状态更新Xn=Phi*Xkf(:,i-1)+Tau*u;%预测%预测协方差更新[~, Delta] = myqr([Phi*Delta0, Tau*sQ]');  %[Phi*Delta0, Tau*sQ]'系统驱动噪声Delta = Delta';%delta_k+1/k=U^T上三角阵,这里已经完成了计算[~, rho] = myqr([H*Delta, sR]'); rho = rho';%相当于%测量更新K=Delta*Delta'*H'*(rho*rho')^(-1);Xkf(:,i)=Xn+K*(Z(:,i)-H*Xn);%状态更新Delta0 = Delta*(eye(length(Delta0))-Delta'*H'*(rho*rho'+sR*rho')^-1*H*Delta);end
endfunction [Phi, Tau, H, Q, R, P0] = rndmodel(n, m, l)  % 随机系统模型Phi = randn(n);  Tau = randn(n,l);  H = randn(m,n);Q = diag(randn(l,1))^2;  R = diag(randn(m,1))^2;P0 = randn(n); P0 = P0'*P0;
endfunction Delta1 = SRKF(Delta0, Phi, Tau, sQ, H, sR)  % 平方根滤波(核心时不断更新协方差的平方根)%Delta0:协方差P的平方根%phi:%tau:%sq:Q平方根%H:H测量矩阵%sr:R平方根%%预测[q, Delta] = myqr([Phi*Delta0, Tau*sQ]');  %[Phi*Delta0, Tau*sQ]'系统驱动噪声Delta = Delta';%delta_k+1/k=U^T上三角阵,这里已经完成了计算[q, rho] = myqr([H*Delta, sR]'); rho = rho';%相当于Delta1 = Delta*(eye(length(Delta0))-Delta'*H'*(rho*rho'+sR*rho')^-1*H*Delta);
endfunction A = mychol(P)  % 乔莱斯基分解,P=A*A', A为上三角阵n = length(P);  A = zeros(n);for j=n:-1:1A(j,j) = sqrt(P(j,j)-A(j,j+1:n)*A(j,j+1:n)');for i=(j-1):-1:1A(i,j) = (P(i,j)-A(i,j+1:n)*A(j,j+1:n)')/A(j,j);endend
endfunction [Q, R] = myqr(A)  % QR分解,A=Q*R, 其中Q'*Q=I,R为上三角阵[m, n] = size(A);if n>m,  error('n must not less than m.'); endR = zeros(n);for i=1:nR(i,i) = sqrt(A(:,i)'*A(:,i));A(:,i) = A(:,i)/R(i,i);j = i+1:n;R(i,j) = A(:,i)'*A(:,j);A(:,j) = A(:,j)-A(:,i)*R(i,j);endQ = A;end

1.4 带遗忘因子的卡尔曼滤波

function Xkf=kalman_forgetting_factor(Xkf,u,Z,H,P0,Q,R,phi,Tau,N)%% 带遗忘因子的kalman滤波lambda=0.5;for i=2:NXn=phi*Xkf(:,i-1)+Tau*u;            %预测P1=phi*P0*phi'+Q;                   %预测误差协方差K=P1*H'*(H*P1*H'+R)^(-1);           %增益Xkf(:,i)=Xn+K*(Z(:,i)-H*Xn);        %状态更新P0=lambda^(-1)*(eye(2)-K*H)*P1;     %滤波误差协方差更新end
end

1.5 自适应卡尔曼滤波

function Xkf=kalman_adaptive(Xkf,u,Z,H,P0,Q,R,phi,Tau,N)%% 自适应kalman滤波K=[1;0];lambda=0.95;%遗忘因子for i=2:NXn=phi*Xkf(:,i-1)+Tau*u;    %预测P1=phi*P0*phi'+Q;           %预测误差协方差dk=(1-lambda)*(1-lambda^(i));vk=Z(:,i)-H*Xn;R=(1-dk)*R+dk*((eye(1)-H*K)*vk*vk'*(eye(1)-H*K)'+H*P0*H');     %观测误差R基于dk调节      K=P1*H'*(H*P1*H'+R)^(-1);   %增益Xkf(:,i)=Xn+K*vk;%状态更新P0=(eye(2)-K*H)*P1;         %滤波误差协方差更新end
end

1.6 限制k减小的卡尔曼滤波

function Xkf=kalman_restrain_K(Xkf,u,Z,H,P0,Q,R,phi,Tau,N)%% 限制k的kalman滤波K=[0;0];for i=2:NXn=phi*Xkf(:,i-1)+Tau*u;%预测P1=phi*P0*phi'+Q;%预测误差协方差e=Z(:,i)-H*Xn;  %新息E=H*P0*H'+R;    %量测估计误差r=3;if(e'*e>r*trace(E))disp("发散");%重置k
%            K=[0.5;0.1];if(i==2)K=P1*H'*(H*P1*H'+R)^(-1);%增益endelseK=P1*H'*(H*P1*H'+R)^(-1);%增益endXkf(:,i)=Xn+K*(Z(:,i)-H*Xn);%状态更新P0=(eye(2)-K*H)*P1;             %滤波误差协方差更新end
end

1.7 扩大P的卡尔曼滤波

function Xkf=kalman_Sk(Xkf,u,Z,H,P0,Q,R,phi,Tau,N)%% 扩大P(k|k-1)的kalman滤波(Sk法)for i=2:NXn=phi*Xkf(:,i-1)+Tau*u;%预测e=Z(:,i)-H*Xn;  %新息E=H*P0*H'+R;    %量测估计误差r=3;if(e'*e>r*trace(E))disp("发散");Sk=trace(e*e'-H*Q*H'-R)/trace(H*phi*P0*phi'*H');P1=Sk*phi*P0*phi'+Q;%预测误差协方差elseP1=phi*P0*phi'+Q;%预测误差协方差endK=P1*H'*(H*P1*H'+R)^(-1);%增益Xkf(:,i)=Xn+K*(Z(:,i)-H*Xn);%状态更新P0=(eye(2)-K*H)*P1;             %滤波误差协方差更新end
end

2 实验

2.1基本与常值增益对比

设一小车匀速直线运动,某处一测距仪每1秒测量到小车的距离,测量误差为零均值的白噪声序列,方差为1。设初始时刻距离的均值为0 m,方差为0.01,速度的均值为2 m/s,方差为0.015。该设小车运行25s,使用基本离散 Kalman 滤波算法和常值增益 Kalman 滤波算法获得小车的距离和速度。


%% 匀速直线运动
clc;clear;
close all;
T=1;%雷达扫描周期
N=25/T;%总的采样次数
X=zeros(2,N);%目标真实位置、速度
X(:,1)=[0,2];%目标初始位置、速度
S(:,1)=[0,2];
Z=zeros(1,N);%传感器对位置的观测
Z(:,1)=X(1,1);%观测初始化
delta_w=1e-1; %如果增大这个参数,目标真实轨迹就是曲线了Q=delta_w*diag([2,2]);%过程噪声方差
R=eye(1)*10;%观测噪声均值phi=[1,T;0,1];%状态转移矩阵
Tau=[T^2/2 0;0,T];
u=[1;1];
W=[1;0];
H=[1,0];%观测矩阵
Xn=zeros(2,0);
Xn_fix=zeros(2,0);for i=2:NS(:,i)=phi*S(:,i-1)+Tau*u;%目标理论轨迹X(:,i)=phi*X(:,i-1)+Tau*u+sqrtm(Q)*randn(2,1);%目标真实轨迹Z(:,i)=H*X(:,i)+sqrtm(R)*randn(1,1);%对目标的观测
end% Kalman 滤波
Xkf=zeros(2,N);
Xkf(:,1)=X(:,1);%卡尔曼滤波状态初始化
Xkf_gainfix=Xkf;
P0=100e-2*eye(2);%协方差阵初始化
%% 基本离散kalman滤波
tic;
Xkf=kalman(Xkf,u,Z,H,P0,Q,R,phi,Tau,N);
toc;%% 固定增益的kalman滤波
tic;
Xkf_gainfix=kalman_gainfix(Xkf_gainfix,u,Z,H,P0,Q,R,phi,Tau,N);
toc;%误差分析
for i=1:NErr_Observation(i)=RMS(X(:,i),Z(:,i));%滤波前的误差Err_KalmanFilter(i)=RMS(X(:,i),Xkf(:,i));%滤波后的误差Err_fixKalmanFilter(i)=RMS(X(:,i),Xkf_gainfix(:,i));%滤波后的误差
end
mean_Observation=mean(Err_Observation);
mean_KalmanFilter=mean(Err_KalmanFilter);
mean_fixKalmanFilter=mean(Err_fixKalmanFilter);
figure
hold on;box on;
t=(0:1:N-1);
plot(t,S(1,:),'g','LineWidth',1);%理论轨迹
plot(t,X(1,:),'--b','LineWidth',1);%实际轨迹
plot(t,Z(1,:),'-or','LineWidth',1);%观测轨迹
plot(t,Xkf(1,:),':k','LineWidth',2);%卡尔曼滤波轨迹
plot(t,Xkf_gainfix(1,:),'-.m','LineWidth',2);%卡尔曼滤波轨迹
% M=M';
% plot(M(1,:),'k','LineWidth',1);%一步预测轨迹
legend('理论轨迹','实际运动轨迹','观测轨迹','基本滤波后轨迹','固定增益滤波后轨迹');
xlabel('横坐标 T/s');
ylabel('纵坐标 X/m');figure
hold on;box on;
plot(t,Err_Observation,'-');
plot(t,Err_KalmanFilter,'--');
plot(t,Err_fixKalmanFilter,'-.');
% legend('滤波前误差',num2str(mean_Observation),'基本滤波后误差','固定增益滤波后误差');
legend(sprintf('滤波前误差%.03f',mean_Observation),sprintf('基本滤波后误差%.03f',mean_KalmanFilter),sprintf('固定增益滤波后误差%.03f',mean_fixKalmanFilter));
xlabel('观测时间/s');
ylabel('误差值');% 计算欧氏距离子函数
function dist=RMS(X1,X2)
if length(X2)<=2dist=sqrt((X1(1)-X2(1))^2);
elsedist=sqrt((X1(1)-X2(1))^2);
end
end

2.2 基本卡尔曼滤波与平方根卡尔曼滤波对比

%% 匀速直线运动
clc;clear;
close all;
T=1;%雷达扫描周期
N=25/T;%总的采样次数
X=zeros(2,N);%目标真实位置、速度
X(:,1)=[0,2];%目标初始位置、速度
S(:,1)=[0,2];
Z=zeros(1,N);%传感器对位置的观测
Z(:,1)=X(1,1);%观测初始化
delta_w=1e-2; %如果增大这个参数,目标真实轨迹就是曲线了Q=delta_w*diag([1,1.5]);%过程噪声方差
R=eye(1);%观测噪声均值phi=[1000000,T;0,1000000];%状态转移矩阵%%%%%% 此处修改
Tau=[T^2/2,0;0,T];
u=[0;0];
W=[1;0];
H=[1,0];%观测矩阵
Xn=zeros(2,0);
Xn_fix=zeros(2,0);for i=2:NS(:,i)=phi*S(:,i-1)+Tau*u;%目标理论轨迹X(:,i)=phi*X(:,i-1)+Tau*u+sqrtm(Q)*randn(2,1);%目标真实轨迹Z(:,i)=H*X(:,i)+sqrtm(R)*randn(1,1);%对目标的观测
end% Kalman 滤波
Xkf=zeros(2,N);
Xkf(:,1)=X(:,1);%卡尔曼滤波状态初始化
Xkf_gainfix=Xkf;
Xkf_sqrt=Xkf;
P0=100e-2*eye(2);%协方差阵初始化
%% 基本离散kalman滤波
Xkf=kalman(Xkf,u,Z,H,P0,Q,R,phi,Tau,N);%% 固定增益的kalman滤波
% Xkf_gainfix=kalman_gainfix(Xkf_gainfix,u,Z,H,P0,Q,R,phi,Tau,N);Xkf_sqrt=kalman_sqrt(Xkf_sqrt,u,Z,H,P0,Q,R,phi,Tau,N);%误差分析
for i=1:NErr_Observation(i)=RMS(X(:,i),Z(:,i));%滤波前的误差Err_KalmanFilter(i)=RMS(X(:,i),Xkf(:,i));%滤波后的误差Err_sqrtKalmanFilter(i)=RMS(X(:,i),Xkf_sqrt(:,i));%滤波后的误差
end
mean_Observation=mean(Err_Observation);
mean_KalmanFilter=mean(Err_KalmanFilter);
mean_fixKalmanFilter=mean(Err_sqrtKalmanFilter);
figure
hold on;box on;
t=(0:1:N-1);
plot(t,S(1,:),'g','LineWidth',1);%理论轨迹
plot(t,X(1,:),'--b','LineWidth',1);%实际轨迹
plot(t,Z(1,:),'-or','LineWidth',1);%观测轨迹
plot(t,Xkf(1,:),':k','LineWidth',2);%卡尔曼滤波轨迹
plot(t,Xkf_sqrt(1,:),'-.m','LineWidth',2);%卡尔曼滤波轨迹
% M=M';
% plot(M(1,:),'k','LineWidth',1);%一步预测轨迹
legend('理论轨迹','实际运动轨迹','观测轨迹','基本滤波后轨迹','平方根滤波后轨迹');
xlabel('横坐标 T/s');
ylabel('纵坐标 X/m');figure
hold on;box on;
plot(t,Err_Observation,'-');
plot(t,Err_KalmanFilter,'--');
plot(t,Err_sqrtKalmanFilter,'-.');
% legend('滤波前误差',num2str(mean_Observation),'基本滤波后误差','固定增益滤波后误差');
legend(sprintf('滤波前误差%.03f',mean_Observation),sprintf('基本滤波后误差%.03f',mean_KalmanFilter),sprintf('平方根滤波后误差%.03f',mean_fixKalmanFilter));
xlabel('观测时间/s');
ylabel('误差值');% 计算欧氏距离子函数
function dist=RMS(X1,X2)
if length(X2)<=2dist=sqrt((X1(1)-X2(1))^2);
elsedist=sqrt((X1(1)-X2(1))^2);
end
end

2.3 抑制滤波发散


%% 匀速直线运动
clc;clear;
close all;
T=1;%雷达扫描周期
N=50/T;%总的采样次数
X=zeros(2,N);%目标真实位置、速度
X(:,1)=[5,0];%目标初始位置、速度
S(:,1)=[5,0];
Z=zeros(1,N);%传感器对位置的观测
Z(:,1)=X(1,1);%观测初始化
delta_w=1e-2; %如果增大这个参数,目标真实轨迹就是曲线了Q=delta_w*diag([1,0]);%过程噪声方差
R=eye(1)*0.1;%观测噪声均值phi=[0.5,0;0,0];%状态转移矩阵
phi_1=[0.5,0;0,0];
Tau=[T^2/2 0;0,T];
u=[8;0];%加速度矩阵
u_1=[0;0];
W=[1;0];
H=[1,0];%观测矩阵
Xn=zeros(2,0);
Xn_fix=zeros(2,0);for i=2:NS(:,i)=phi*S(:,i-1)+Tau*u;%目标理论轨迹X(:,i)=phi*X(:,i-1)+Tau*u+sqrtm(Q)*randn(2,1);%目标真实轨迹Z(:,i)=H*X(:,i)+sqrtm(R)*randn(1,1);%对目标的观测
end% Kalman 滤波
Xkf=zeros(2,N);
Xkf(:,1)=X(:,1);%卡尔曼滤波状态初始化
Xkf_rk=Xkf;
Xkf_ff=Xkf;
Xkf_Sk=Xkf;
P0=100e-2*eye(2);%协方差阵初始化
%% 基本离散kalman滤波
Xkf=kalman(Xkf,u_1,Z,H,P0,Q,R,phi,Tau,N);%% 限制K减小的kalman滤波
Xkf_rk=kalman_restrain_K(Xkf_rk,u_1,Z,H,P0,Q,R,phi,Tau,N);%% 带遗忘因子的kalman滤波
Xkf_ff=kalman_forgetting_factor(Xkf_ff,u_1,Z,H,P0,Q,R,phi,Tau,N);%% 扩大P的kalman滤波
Xkf_Sk=kalman_Sk(Xkf_Sk,u_1,Z,H,P0,Q,R,phi,Tau,N);%误差分析
for i=1:NErr_Observation(i)=RMS(X(:,i),Z(:,i));%滤波前的误差Err_KalmanFilter(i)=RMS(X(:,i),Xkf(:,i));%滤波后的误差Err_rkKalmanFilter(i)=RMS(X(:,i),Xkf_rk(:,i));%滤波后的误差Err_ffKalmanFilter(i)=RMS(X(:,i),Xkf_ff(:,i));%滤波后的误差Err_adKalmanFilter(i)=RMS(X(:,i),Xkf_Sk(:,i));%滤波后的误差
end
mean_Observation=mean(Err_Observation);
mean_KalmanFilter=mean(Err_KalmanFilter);
mean_fixKalmanFilter=mean(Err_rkKalmanFilter);
mean_ffKalmanFilter=mean(Err_ffKalmanFilter);
mean_adKalmanFilter=mean(Err_adKalmanFilter);%% 画图
figure
hold on;box on;
t=(0:1:N-1);
plot(t,S(1,:),'-','LineWidth',1);%理论轨迹
plot(t,X(1,:),'--','LineWidth',1);%实际轨迹
plot(t,Z(1,:),'-o','LineWidth',1);%观测轨迹
plot(t,Xkf(1,:),':','LineWidth',2);%卡尔曼滤波轨迹
plot(t,Xkf_rk(1,:),'-.','LineWidth',2);%卡尔曼滤波轨迹
plot(t,Xkf_ff(1,:),'-x','LineWidth',2);%卡尔曼滤波轨迹
plot(t,Xkf_Sk(1,:),'--s','LineWidth',2);%卡尔曼滤波轨迹
% M=M';
% plot(M(1,:),'k','LineWidth',1);%一步预测轨迹
legend('理论轨迹','实际运动轨迹','观测轨迹','基本滤波后轨迹','限制k减小滤波后轨迹','带遗忘因子卡尔曼滤波','扩大P的卡尔曼滤波');
xlabel('横坐标 T/s');
ylabel('纵坐标 X/m');figure
hold on;box on;
plot(t,Err_Observation,'-');
plot(t,Err_KalmanFilter,'--');
plot(t,Err_rkKalmanFilter,'-.');
plot(t,Err_ffKalmanFilter,'-x');
plot(t,Err_adKalmanFilter,'-s');
% legend('滤波前误差',num2str(mean_Observation),'基本滤波后误差','固定增益滤波后误差');
legend(sprintf('滤波前误差%.03f',mean_Observation),sprintf('基本滤波后误差%.03f',mean_KalmanFilter),...
sprintf('限制k减小增益滤波后误差%.03f',mean_fixKalmanFilter),sprintf('带遗忘因子滤波后误差%.03f',mean_ffKalmanFilter),...
sprintf('扩大P的滤波后误差%.03f',mean_adKalmanFilter));
xlabel('观测时间/s');
ylabel('误差值');% 计算欧氏距离子函数
function dist=RMS(X1,X2)
if length(X2)<=2dist=sqrt((X1(1)-X2(1))^2);
elsedist=sqrt((X1(1)-X2(1))^2);
end
end

数据融合技术——基本/常值增益/平方根/遗忘因子/自适应/限制k/扩大p的卡尔曼滤波相关推荐

  1. 无线传感器网络数据融合技术

    http://www.dzsc.com/data/html/2008-11-28/73975.html 由于大多数无线传感器网络应用都是由大量传感器节点构成的,共同完成信息收集.目标监视和感知环境的任 ...

  2. 大数据融合技术:问题与挑战

    大数据融合技术:问题与挑战 本文为<大数据融合研究:问题与挑战>的总结. 概述 数据的特点: 多元性--数据类型多样:数据内容"维度"多样:数据所涉及的知识范畴的&qu ...

  3. 多传感器数据融合技术如何应用在自动驾驶领域?

    多传感器融合是一项结合多传感器数据的综合性前沿内容,主要包括Camera.激光雷达.IMU.毫米波雷达等传感器的融合,在自动驾驶.移动机器人的感知和定位领域中占有非常重要的地位: 随着AI技术的大规模 ...

  4. GIS时空大数据融合技术——美丽长岛数据融合

    美丽长岛 这次我们介绍一个美丽的海岛--长岛县,山东省人民政府正式批复设立长岛海洋生态文明综合试验区.并在2018年11月,长岛县入选2018全国"幸福百县榜". 第三批" ...

  5. 【自动驾驶】视觉与毫米波雷达数据融合技术

    文章目录 一.相机介绍 二.毫米波雷达介绍 三.为什么要做传感器融合 四.相机与毫米波雷达的融合方式 五.雷达与相机联合标定 (1)毫米波雷达坐标系至世界坐标系 (2)世界坐标系至图像像素坐标系 六. ...

  6. 盘一盘!实时自动驾驶车辆定位技术都有哪些?(视觉/Lidar/多传感器数据融合)...

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[SLAM]技术交流群 后台回复[车辆定位综述]获取论文! 1摘要 实时.准确和鲁棒的定 ...

  7. 实时自动驾驶车辆定位技术都有哪些?(视觉/Lidar/多传感器数据融合)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨汽车人 来源丨自动驾驶之心 编辑丨3D视觉工坊 点击进入->3D视觉工坊学习交流群 1摘要 ...

  8. 动手学无人驾驶(5):多传感器数据融合

    本系列的前4篇文章主要介绍了深度学习技术在无人驾驶环境感知中的应用,包括交通标志识别,图像与点云3D目标检测.关于环境感知部分的介绍本系列暂且告一段落,后续如有需要再进行补充. 现在我们开启新的篇章, ...

  9. 李群 李代数在计算机视觉中的应用,李群李代数在数据融合算法中的应用分析...

    袁治晴 摘要:数据融合是提升机器人.无人驾驶.无人机等应用能力的重要手段,一直是前沿技术中研究的一个热点,关于数据融合算法的分析设计,学术界和工程界对此方面进行了长期的研究与讨论,而数据融合算法结合李 ...

  10. 基于数据融合的城市点云自动标注

    文章:Automatic labelling of urban point clouds using data fusion 作者:Daan Bloembergen and Chris Eijgens ...

最新文章

  1. 将获取到的JSONObject和JSONArray转换为实体对象
  2. VS2015占内存大吗?_手机是6GB运行内存,何为后台却显示3G内存?
  3. 流媒体实质上是计算机在哪方面的应用,流媒体技术主要用于什么
  4. [Google Guava] 9-I/O
  5. c语言中block做函数参数,c语言中的block
  6. C/C++中的关键字
  7. 视觉SLAM笔记(14) Eigen几何模块
  8. 63. windows php 加载不了 curl
  9. 黑马程序员提供得教程
  10. kirin710f是什么处理器_麒麟710F处理器怎么样
  11. Android Studio Gradle实践之多渠道自动化打包+版本号管理
  12. c语言文字冒险类游戏,课内资源 - 基于C语言和easyx实现的巧虎划船大冒险游戏...
  13. 软件测试职业培训有感
  14. 抽象代数——群的基本定义和一些例子
  15. 论文阅读:Piggyback: Adapting a Single Network to Multiple Tasks by Learning to Mask Weights
  16. C语言实验设备预约管理系统
  17. 上善若水,绿之韵对传销说不!
  18. 从土木工程转行到数据科学,这门课程改变了一切
  19. 声纹识别demo_声纹识别 · JD NeuHub API Documents
  20. pink老师HTML详细笔记(b站视频)

热门文章

  1. BUUCTF--[0CTF 2016]piapiapia
  2. java kryo_通过Kryo的序列化方式提升Netty性能
  3. 七夕节,我用代码制作了表白信封
  4. 关于oneway void
  5. 分享一些图片懒加载组件的设计思路
  6. 卫生保健所短信群发模板:预约挂号、就诊提醒、检查结果通知
  7. Go 1.9 sync Map 源码阅读笔记
  8. 实验吧-简单的登录题
  9. CCNP-Spanning-Tree
  10. 15款秋季养生粥DIY