function [x, y, typ] = Kalman_Filter_IF(job, arg1, arg2)
funcprot(0)
x = [];
y = [];
typ = [];
getInputFromSim = 1;
funcprot(0) // Use funcprot(0) to avoid this message it happen when we see inbuilt funcitons by system
// getinput
z = [3.1948799;-1.3840684;2.3774667]
work=zeros(34,1)
State = [3.1948799;-1.3840684;2.3774667]
Covariance = [];
select job
// Initialize with mask parameters if any
case "plot" then
standard_draw(arg1);
case "getinputs" then
[x, y, typ] = standard_inputs(arg1);
case "getoutputs" then
[x, y, typ] = standard_outputs(arg1);
case "getorigin" then
[x, y] = standard_origin(arg1);
disp (graphics)
case 'set'
// Assignments here comes after assignments of the execution with the "define" flag
x = arg1; // This line is essential, otherwise gives "Invalid index." error.
graphics = arg1.graphics;
exprs = graphics.exprs;
model = arg1.model;
if getInputFromSim == 1 then
exec('macros/Kalman_Filter_Utils.sci', -1); // Not sure about this line in MATLAB, comment it if not necessary
title = "Set Parameter";
labels = ['Initial state [x_dot(velocity), x(position)] which is position in ECEF frame and velocity','Covariance which gives the uncertainty at position and velocity']; // Changed 'Stiffness' to 'Covariance'
// In future we can add {'Accelerations', 'Orientations which is obation altitude control system'}
types = list('mat', [2,2], 'mat', [2,2]); // Changed 'vec' to 'mat' for Covariance
endLoop = %f;
// Create a dialog for getting user inputs
while ~endLoop do
// Initialize dialog for parameters and initial state
[ok, State, Covariance, exprs] = scicos_getvalue(title, labels, types, exprs);
errMsg = [];
// Check return set conditions of the initial state as per meetings
if ~ok then
// depends on what type of data we are having
if condition1 // first condition of position and velocity
errMsg = [];
end
if condition2 // second condition of velocity
errMsg = [];
end
if isempty(errMsg) then
[model.rpar, isError] = EncodeRpar_KF(model.rpar, State, Covariance);
graphics.exprs = exprs;
x.graphics = graphics;
x.model = model;
endLoop = %t;
// Check parameters
// You can add additional checks for input parameters here if needed
// Accept inputs and save them
else
messagebox(errMsg);
error(errMsg, 20000);
endLoop = %f;
end
else
warning('Kalman_Filter_IF: Set: Cancel!');
endLoop = %t;
end
end
else
graphics.exprs = exprs;
x.graphics = graphics;
x.model = model;
end
// Concatenate the covariance matrix to the state vector
// model.state = [State; Covariance(:)]; // Use the concatenation operator ":" for the matrix
// Define block properties
case 'define'then
// Create object
model = scicos_model();
// Provide name and type
model.sim = {'Kalman_Filter_sim', 5}; // what is case 4 and 5? https://help.scilab.org/scicos_model.html
// Define inputs and outputs
// One input with a variable-size "double" element
model.in = [1]; // it's only z,[-ve, complier will try to find appropriate size, 0 and +ve]
// it has at first position occupies which means at first position is 1, 1 indicates that only one input value, see wriiten notes to understand
model.in2 = [1]; // the second dimension of I/P whcih means all the data enter has one dimension data for example just z axis data while if it was 2 than we have input data of x and y if there is 3 then x,y,z so on. each column represents specific data. Same as above comment [https://help.scilab.org/scicos_model.html]
model.intyp = 1;
// One output with a single "double" element
model.out = [1];
model.out2 = [1];
model.outtyp = [1];
// Set default parameter
model.rpar= [Covariance(:)]; // Use the covariance matrix as a parameter
// Set initial state
model.state = [State; Covariance(:)]; // Use the matrix concatenation operator ":" to convert matrix to column vector
// Define block properties
model.blocktype = 'c';
model.dep_ut = [%t,%f]; // what does %t and %f indicates? true and false
// Set block properties
exprs = ['[0.0; 0.0]', '[1.0]']; // How do we get this value?
x = standard_define([4 4], model, exprs);
x.graphics.style = ['blockWithLabel;displayedLabel=Kalman_Filter'];
// other cases other than set or define sections
end
endfunction
The code has issue with input data type and output data type. I read it but there is still issue with it. Can someone explain it in simple language for me?
The error is in the below part which is model and link of it https://help.scilab.org/scicos_model.html
Now where is the isssue out of 6 data type input and output is difficult to locate it. Thank you.