0001 function ui_ft_design_data(D, mY, e_s, opts)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 if ~is_fmri(D)
0017 disp('Need an FMRI design for design/data plot');
0018 return
0019 end
0020 if nargin < 2
0021 error('Need data to plot against');
0022 end
0023 mY = marsy(mY);
0024 if n_time_points(mY) ~= n_time_points(D)
0025 error('Design and data have different number of rows');
0026 end
0027
0028 if nargin < 3, e_s = []; end
0029 if nargin < 4, opts = []; end
0030
0031 e_n = 'Event';
0032 if isempty(e_s)
0033
0034 [Finter,Fgraph,CmdLine] = spm('FnUIsetup','Design filter', 1);
0035 [e_s e_n] = ui_get_event(D);
0036 end
0037 if isfield(opts, 'fig')
0038 Fgraph = opts.fig;
0039 else
0040 Fgraph = spm_figure('GetWin');
0041 end
0042 e_n_tmp = mars_struct('getifthere', opts, 'event_name');
0043 if ~isempty(e_n_tmp)
0044 e_n = e_n_tmp;
0045 end
0046
0047 s = e_s(1);
0048 e = e_s(2);
0049
0050
0051 X = design_matrix(D);
0052 R = X(:, event_cols(D,e_s));
0053 Y = summary_data(mY);
0054 r = block_rows(D);
0055 r = r{s};
0056 R = R(r,:);
0057 Y = Y(r,:);
0058
0059
0060 if isfield(opts, 'filter')
0061 R = apply_filter(D, R, struct('sessions', s));
0062 Y = apply_filter(D, Y, struct('sessions', s));
0063 end
0064
0065 TR = tr(D);
0066 if isempty(TR)
0067 b_len = 1;
0068 b_str = 'cycles per time point';
0069 else
0070 b_len = TR;
0071 b_str = 'Hz';
0072 end
0073 q = length(r);
0074 Hz = [0:(q - 1)]/(q * b_len);
0075 q = 2:fix(q/2);
0076 Hz = Hz(q);
0077
0078 figure(Fgraph)
0079 subplot(2,1,1);
0080 gX = abs(fft(R)).^2;
0081 gX = gX*diag(1./sum(gX));
0082 gX = gX(q,:);
0083 plot(Hz, gX);
0084 xlabel(sprintf('Frequency (%s)', b_str))
0085 ylabel('Relative spectral density')
0086 t_str = sprintf('Regressors for %s: block %d', e_n, e_s(1));
0087 title(t_str, 'interpreter', 'none');
0088 axis tight
0089
0090 subplot(2,1,2);
0091 gX = abs(fft(spm_detrend(Y))).^2;
0092 gX = gX*diag(1./sum(gX));
0093 gX = gX(q,:);
0094 plot(Hz, gX);
0095 xlabel(sprintf('Frequency (%s)', b_str))
0096 ylabel('Relative spectral density')
0097 title('Region data');
0098 legend(region_name(mY));
0099 axis tight
0100