-
Notifications
You must be signed in to change notification settings - Fork 44
/
Copy pathgridtolinear.m
30 lines (28 loc) · 1.45 KB
/
gridtolinear.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function [linmap] = gridtolinear(gridmap,var,gridSize)
% This function reshapes a 2D x nshuff grid map to a 1D x nshuff linear map
% Opposite function to lineartogrid.m
switch var
case 'place'
if size(gridmap,1) ~= 1 % || sum(gridSize(:,1).*sum(gridSize(:,2))) ~= sum(gridmap(:,1).*sum(gridmap(:,2)))
error('Incorrect dimensions specified for grid size');
end
case 'view'
if size(gridmap,1) ~= 9 % || sum(gridSize(:,1).*sum(gridSize(:,2))) ~= sum(gridmap(:,1).*sum(gridmap(:,2)))
error('Incorrect dimensions specified for grid size');
end
case 'headdirection'
if size(gridmap,1) ~= 1 % || sum(gridSize(:,1).*sum(gridSize(:,2))) ~= sum(gridmap(:,1).*sum(gridmap(:,2)))
error('Incorrect dimensions specified for grid size');
end
end
linmap = nan(sum(gridSize(:,1).*gridSize(:,2)),size(gridmap{1},3));
for ii = 1:size(gridmap,1)
if strcmp(var,'place') | strcmp(var,'view') % matrix and plor coords are opposite for place and view, but not hd
temp = reshape(rot90(gridmap{ii},-1),size(gridmap{ii},1)*size(gridmap{ii},2),size(gridmap{1},3));
else
temp = reshape(gridmap{ii},size(gridmap{ii},1)*size(gridmap{ii},2),size(gridmap{1},3));
end
lin_inds = sum(gridSize(1:ii-1,1).*gridSize(1:ii-1,2))+1:sum(gridSize(1:ii,1).*gridSize(1:ii,2));
% linmap(lin_inds,:) = reshape(temp,1,gridSize(ii,1)*gridSize(ii,2),size(gridmap{1},3));
linmap(lin_inds,:) = temp;
end