📄 kalman_gui.m
字号:
set(hObject, 'String', 0);
errordlg('Input must be a number','Error');
end
% --- Executes during object creation, after setting all properties.
function x0_4_CreateFcn(hObject, eventdata, handles)
% hObject handle to x0_4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
function x0_4_Callback(hObject, eventdata, handles)
% hObject handle to x0_4 (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 x0_4 as text
% str2double(get(hObject,'String')) returns contents of x0_4 as a double
temp = str2double(get(hObject, 'String'));
if isnan(temp)
set(hObject, 'String', 0);
errordlg('Input must be a number','Error');
end
% --- Executes during object creation, after setting all properties.
function x0_5_CreateFcn(hObject, eventdata, handles)
% hObject handle to x0_5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
function x0_5_Callback(hObject, eventdata, handles)
% hObject handle to x0_5 (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 x0_5 as text
% str2double(get(hObject,'String')) returns contents of x0_5 as a double
temp = str2double(get(hObject, 'String'));
if isnan(temp)
set(hObject, 'String', 0);
errordlg('Input must be a number','Error');
end
% --- Executes during object creation, after setting all properties.
function x0_6_CreateFcn(hObject, eventdata, handles)
% hObject handle to x0_6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
function x0_6_Callback(hObject, eventdata, handles)
% hObject handle to x0_6 (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 x0_6 as text
% str2double(get(hObject,'String')) returns contents of x0_6 as a double
temp = str2double(get(hObject, 'String'));
if isnan(temp)
set(hObject, 'String', 0);
errordlg('Input must be a number','Error');
end
% --- Executes on button press in CalculateButton.
function CalculateButton_Callback(hObject, eventdata, handles)
% hObject handle to CalculateButton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
start_loc = zeros(3,1);
velocity = 0.0 ;
yamp = 0.0 ;
yperiod = 0.0 ;
zamp = 0.0 ;
zperiod = 0.0 ;
samplingtime = 0.0 ;
deltat = 0.0 ;
sigmaaz = 0.0 ;
sigmael = 0.0 ;
sigmarange = 0.0 ;
x0 = zeros(6,1) ;
P0 = zeros(6,6) ;
R = zeros(3,3) ;
Q = zeros(6,6) ;
start_loc(1) = str2num(get(handles.xstart,'String')) ;
start_loc(2) = str2num(get(handles.ystart,'String')) ;
start_loc(3) = str2num(get(handles.zstart,'String')) ;
start_loc
velocity = str2num(get(handles.velocity,'String'))
yamp = str2num(get(handles.y_amp,'String'))
yperiod = str2num(get(handles.y_period,'String'))
zamp = str2num(get(handles.z_amp,'String'))
zperiod = str2num(get(handles.z_period,'String'))
samplingtime = str2num(get(handles.sampletime,'String'))
deltat = str2num(get(handles.deltat,'String'))
sigmaaz = str2num(get(handles.sigmaaz,'String'))
sigmael = str2num(get(handles.sigmael,'String'))
sigmarange = str2num(get(handles.sigmarange,'String'))
x0(1) = str2num(get(handles.x0_1,'String')) ;
x0(2) = str2num(get(handles.x0_2,'String')) ;
x0(3) = str2num(get(handles.x0_3,'String')) ;
x0(4) = str2num(get(handles.x0_4,'String')) ;
x0(5) = str2num(get(handles.x0_5,'String')) ;
x0(6) = str2num(get(handles.x0_6,'String')) ;
P0(1,1) = str2num(get(handles.P11,'String')) ;
P0(1,2) = str2num(get(handles.P12,'String')) ;
P0(1,3) = str2num(get(handles.P13,'String')) ;
P0(1,4) = str2num(get(handles.P14,'String'));
P0(1,5) = str2num(get(handles.P15,'String'));
P0(1,6) = str2num(get(handles.P16,'String'));
P0(2,1) = str2num(get(handles.P21,'String'));
P0(2,2) = str2num(get(handles.P22,'String'));
P0(2,3) = str2num(get(handles.P23,'String'));
P0(2,4) = str2num(get(handles.P24,'String'));
P0(2,5) = str2num(get(handles.P25,'String'));
P0(2,6) = str2num(get(handles.P26,'String'));
P0(3,1) = str2num(get(handles.P31,'String'));
P0(3,2) = str2num(get(handles.P32,'String'));
P0(3,3) = str2num(get(handles.P33,'String'));
P0(3,4) = str2num(get(handles.P34,'String'));
P0(3,5) = str2num(get(handles.P35,'String'));
P0(3,6) = str2num(get(handles.P36,'String'));
P0(4,1) = str2num(get(handles.P41,'String'));
P0(4,2) = str2num(get(handles.P42,'String'));
P0(4,3) = str2num(get(handles.P43,'String'));
P0(4,4) = str2num(get(handles.P44,'String'));
P0(4,5) = str2num(get(handles.P45,'String'));
P0(4,6) = str2num(get(handles.P46,'String'));
P0(5,1) = str2num(get(handles.P51,'String'));
P0(5,2) = str2num(get(handles.P52,'String'));
P0(5,3) = str2num(get(handles.P53,'String'));
P0(5,4) = str2num(get(handles.P54,'String'));
P0(5,5) = str2num(get(handles.P55,'String'));
P0(5,6) = str2num(get(handles.P56,'String'));
P0(6,1) = str2num(get(handles.P61,'String'));
P0(6,2) = str2num(get(handles.P62,'String'));
P0(6,3) = str2num(get(handles.P63,'String'));
P0(6,4) = str2num(get(handles.P64,'String'));
P0(6,5) = str2num(get(handles.P65,'String'));
P0(6,6) = str2num(get(handles.P66,'String'));
R(1,1) = str2num(get(handles.R_11,'String')) ;
R(1,2) = str2num(get(handles.R_12,'String'));
R(1,3) = str2num(get(handles.R_13,'String'));
R(2,1) = str2num(get(handles.R_21,'String'));
R(2,2) = str2num(get(handles.R_22,'String'));
R(2,3) = str2num(get(handles.R_23,'String'));
R(3,1) = str2num(get(handles.R_31,'String'));
R(3,2) = str2num(get(handles.R_32,'String'));
R(3,3) = str2num(get(handles.R_33,'String'));
Q(1,1) = str2num(get(handles.Q11,'String'));
Q(1,2) = str2num(get(handles.Q12,'String'));
Q(1,3) = str2num(get(handles.Q13,'String'));
Q(1,4) = str2num(get(handles.Q14,'String'));
Q(1,5) = str2num(get(handles.Q15,'String'));
Q(1,6) = str2num(get(handles.Q16,'String'));
Q(2,1) = str2num(get(handles.Q21,'String'));
Q(2,2) = str2num(get(handles.Q22,'String'));
Q(2,3) = str2num(get(handles.Q23,'String'));
Q(2,4) = str2num(get(handles.Q24,'String'));
Q(2,5) = str2num(get(handles.Q25,'String'));
Q(2,6) = str2num(get(handles.Q26,'String'));
Q(3,1) = str2num(get(handles.Q31,'String'));
Q(3,2) = str2num(get(handles.Q32,'String'));
Q(3,3) = str2num(get(handles.Q33,'String'));
Q(3,4) = str2num(get(handles.Q34,'String'));
Q(3,5) = str2num(get(handles.Q35,'String'));
Q(3,6) = str2num(get(handles.Q36,'String'));
Q(4,1) = str2num(get(handles.Q41,'String'));
Q(4,2) = str2num(get(handles.Q42,'String'));
Q(4,3) = str2num(get(handles.Q43,'String'));
Q(4,4) = str2num(get(handles.Q44,'String'));
Q(4,5) = str2num(get(handles.Q45,'String'));
Q(4,6) = str2num(get(handles.Q46,'String'));
Q(5,1) = str2num(get(handles.Q51,'String'));
Q(5,2) = str2num(get(handles.Q52,'String'));
Q(5,3) = str2num(get(handles.Q53,'String'));
Q(5,4) = str2num(get(handles.Q54,'String'));
Q(5,5) = str2num(get(handles.Q55,'String'));
Q(5,6) = str2num(get(handles.Q56,'String'));
Q(6,1) = str2num(get(handles.Q61,'String'));
Q(6,2) = str2num(get(handles.Q62,'String'));
Q(6,3) = str2num(get(handles.Q63,'String'));
Q(6,4) = str2num(get(handles.Q64,'String'));
Q(6,5) = str2num(get(handles.Q65,'String'));
Q(6,6) = str2num(get(handles.Q66,'String'));
x0
P0
R
Q
kalm(start_loc, velocity, yamp, yperiod, zamp, zperiod, samplingtime, deltat, sigmaaz, sigmael, sigmarange, x0, P0, R, Q) ;
% --- Executes on button press in ResetMissileButton.
function ResetMissileButton_Callback(hObject, eventdata, handles)
% hObject handle to ResetMissileButton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
data.start_loc = [100000 ;0 ; 2000] ; % starting location
data.velocity = -150 ; % velocity in x direction
data.yamp = 500 ; % amplitude of y maneuvering
data.yperiod = 50 ; % period of y maneuvering
data.zamp = 0 ; % amplitude of z maneuvering
data.zperiod = 0 ; % period of z maneuvering
data.samplingtime = 400 ; % length of time sampled
data.deltat = .04 ; % time between samples
data.sigmaaz = 0.001 ; % standard deviation of azimuth error in radians
data.sigmael = 0.0001 ; % standard deviation of elevation error in radians
data.sigmarange = 12.5 ; % standard deviation of range error in meters
% Kalman filtering information
data.x0 = [0; 0; 0 ; 0 ; 0; 0 ]; % initial state estimate
data.P0 = [100000 0 0 0 0 0 ; % initial covariance estimate
0 10000 0 0 0 0 ;
0 0 1000000 0 0 0 ;
0 0 0 10000 0 0 ;
0 0 0 0 1000000 0 ;
0 0 0 0 0 10000 ];
data.R = diag([ 100 100 100]) ; % measurement error covariance matrix
data.Q = diag([ 1 0.1 1 0.1 1 0.1]);% state error covariance matrix
set(handles.xstart, 'String', data.start_loc(1));
set(handles.ystart, 'String', data.start_loc(2));
set(handles.zstart, 'String', data.start_loc(3));
set(handles.velocity, 'String', data.velocity);
set(handles.y_amp, 'String', data.yamp);
set(handles.y_period, 'String', data.yperiod);
set(handles.z_amp, 'String', data.zamp);
set(handles.z_period, 'String', data.zperiod);
set(handles.sampletime, 'String', data.samplingtime);
set(handles.deltat, 'String', data.deltat);
set(handles.sigmaaz, 'String', data.sigmaaz);
set(handles.sigmael, 'String', data.sigmael);
set(handles.sigmarange, 'String', data.sigmarange);
set(handles.x0_1, 'String', num2str(data.x0(1)));
set(handles.x0_2, 'String', num2str(data.x0(2)));
set(handles.x0_3, 'String', num2str(data.x0(3)));
set(handles.x0_4, 'String', num2str(data.x0(4)));
set(handles.x0_5, 'String', num2str(data.x0(5)));
set(handles.x0_6, 'String', num2str(data.x0(6)));
set(handles.P11, 'String', num2str(data.P0(1,1)) );
set(handles.P12, 'String', num2str(data.P0(1,2)) );
set(handles.P13, 'String', num2str(data.P0(1,3)) );
set(handles.P14, 'String', num2str(data.P0(1,4)) );
set(handles.P15, 'String', num2str(data.P0(1,5)) );
set(handles.P16, 'String', num2str(data.P0(1,6)) );
set(handles.P21, 'String', num2str(data.P0(2,1)) );
set(handles.P22, 'String', num2str(data.P0(2,2)) );
set(handles.P23, 'String', num2str(data.P0(2,3)) );
set(handles.P24, 'String', num2str(data.P0(2,4)) );
set(handles.P25, 'String', num2str(data.P0(2,5)) );
set(handles.P26, 'String', num2str(data.P0(2,6)) );
set(handles.P31, 'String', num2str(data.P0(3,1)) );
set(handles.P32, 'String', num2str(data.P0(3,2)) );
set(handles.P33, 'String', num2str(data.P0(3,3)) );
set(handles.P34, 'String', num2str(data.P0(3,4)) );
set(handles.P35, 'String', num2str(data.P0(3,5)) );
set(handles.P36, 'String', num2str(data.P0(3,6)) );
set(handles.P41, 'String', num2str(data.P0(4,1)) );
set(handles.P42, 'String', num2str(data.P0(4,2)) );
set(handles.P43, 'String', num2str(data.P0(4,3)) );
set(handles.P44, 'String', num2str(data.P0(4,4)) );
set(handles.P45, 'String', num2str(data.P0(4,5)) );
set(handles.P46, 'String', num2str(data.P0(4,6)) );
set(handles.P51, 'String', num2str(data.P0(5,1)) );
set(handles.P52, 'String', num2str(data.P0(5,2)) );
set(handles.P53, 'String', num2str(data.P0(5,3)) );
set(handles.P54, 'String', num2str(data.P0(5,4)) );
set(handles.P55, 'String', num2str(data.P0(5,5)) );
set(handles.P56, 'String', num2str(data.P0(5,6)) );
set(handles.P61, 'String', num2str(data.P0(6,1)) );
set(handles.P62, 'String', num2str(data.P0(6,2)) );
set(handles.P63, 'String', num2str(data.P0(6,3)) );
set(handles.P64, 'String', num2str(data.P0(6,4)) );
set(handles.P65, 'String', num2str(data.P0(6,5)) );
set(handles.P66, 'String', num2str(data.P0(6,6)) );
set(handles.R_11, 'String', num2str(data.R(1,1)) );
set(handles.R_12, 'String', num2str(data.R(1,2)) );
set(handles.R_13, 'String', num2str(data.R(1,3)) );
set(handles.R_21, 'String', num2str(data.R(2,1)) );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -