clc; clear all; close all; clear classes
% *************************************************************************
% Simulation of the module model for configuration B (rectangular box)
% takes about 4 min.
%
% Copyright (C) 2015 Florian Raudies, 05/02/2015, Palo Alto, CA.
% License, GNU GPL, free software, without any warranty.
% *************************************************************************
addpath('./DotWorld');
rng(4); % Set the seed value for the random number generator.
% Initialize the camera, cube box, and the module model.
camera = SphericalCamera([0;0;1;0],[0;1;0;0],[0;0;0;0],...
360/180*pi,120/180*pi,0,0,0,0,5,10^4);
cube = Cube([-75 -2.5 -75 75 47.5 75],[3 3 3]);
GroundA = cube.getGroundSegment();
configA = Scene(cube, camera);
P1 = cube.getPoints();
opt.nStep = 5;
opt.Ground = GroundA;
% Create the module model here because of the change of the cube, which
% would influence the width/length parameters inside the module model.
mm = ModuleModel(configA, opt);
% Change the cube for configuration B.
[cube DeleteIndex] = cube.resizeX([-50 50]); % Configuration B.
GroundB = cube.getGroundSegment();
configB = Scene(cube, camera);
P2 = cube.getPoints();
opt.nStep = 5*10^4;
opt.Ground = GroundB;
opt.DeleteIndex = DeleteIndex;
mm.resetScene(configB, opt);
tic
mm.simulate();
rmpath('./DotWorld');
PosGt = mm.getPosGt;
VelZGt = mm.getVelZGt;
OmegaYGt = mm.getOmegaYGt;
PosEstByVel = mm.getPosEstByVel;
PosEstByAng = mm.getPosEstByAng;
SpikePosForVel = mm.getSpikePosForVel;
SpikePosForAng = mm.getSpikePosForAng;
opt.NumPx = [41 27]; % Discretization for firing rate maps.
[gsVelVCO, SpikeRateVelVCO, gsAngVCO, SpikeRateAngVCO] ...
= mm.calculateGridScores(opt);
mm.calculateGridCellFiringWithAttractorModel();
[gsVelAtt, SpikeRateVelAtt, gsAngAtt, SpikeRateAngAtt] ...
= mm.calculateGridScores(opt);
toc
save('SimConfB', 'PosGt', 'PosEstByAng', 'PosEstByVel', ...
'VelZGt', 'OmegaYGt', 'SpikePosForVel', 'SpikePosForAng',...
'gsVelVCO', 'SpikeRateVelVCO', 'gsAngVCO', 'SpikeRateAngVCO',...
'gsVelAtt', 'SpikeRateVelAtt', 'gsAngAtt', 'SpikeRateAngAtt');