-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathspm_data_write.m
69 lines (65 loc) · 2.18 KB
/
spm_data_write.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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
function V = spm_data_write(V,Y,varargin)
% Write data to disk [V(I) = Y]
% FORMAT V = spm_data_write(V,Y)
% V - a structure array (see spm_data_hdr_read)
% Y - an array of data values
%
% FORMAT V = spm_data_write(V,Y,I)
% V - a structure array (see spm_data_hdr_read)
% Y - an array of data values
% I - linear index to data values
%__________________________________________________________________________
% Copyright (C) 2012-2014 Wellcome Trust Centre for Neuroimaging
% Guillaume Flandin
% $Id: spm_data_write.m 5916 2014-03-13 13:15:02Z guillaume $
if isfield(V,'private')
cl = class(V.private);
elseif isfield(V,'dat')
cl = 'struct';
else
error('Unkwown data type.');
end
switch cl
case 'nifti'
if isempty(varargin)
V = spm_write_vol(V,Y);
%S = substruct('()',repmat({':'},1,numel(V.private.dat.dim)));
%V.private.dat = subsasgn(V.private.dat,S,Y);
else
if numel(varargin) == 1
try
V.private.dat(varargin{1}) = reshape(Y,size(varargin{1}));
catch
V.private.dat(varargin{1}) = reshape(Y,size(varargin{1}))';
end
else
error('not implemented yet');
end
end
case 'struct'
if isempty(varargin)
V.dat = Y;
else
if numel(varargin) == 1
V.dat(varargin{1}) = reshape(Y,size(varargin{1}));
else
error('not implemented yet');
end
end
case 'gifti'
if isempty(varargin)
D = V.private.cdata;
D = subsasgn(D,substruct('()',{':'}),Y);
%V.private.cdata = D;
else
try
%V.private.cdata(varargin{1}) = reshape(Y,size(varargin{1}));
V.private.private.data{1}.data(varargin{1}) = reshape(Y,size(varargin{1}));
catch
%V.private.cdata(varargin{1}) = reshape(Y,size(varargin{1}))';
V.private.private.data{1}.data(varargin{1}) = reshape(Y,size(varargin{1}))';
end
end
otherwise
error('Unknown data type.');
end