Mind Reading: Difference between revisions
Jump to navigation
Jump to search
Line 15: | Line 15: | ||
vols=floor(t/TR)+1; %convert the timestamps into volume numbers | vols=floor(t/TR)+1; %convert the timestamps into volume numbers | ||
cond=double(cell2mat({expinfo.data.conditon})); %what condition is each trial? | cond=double(cell2mat({expinfo.data.conditon})); %what condition is each trial? | ||
%p.s., note the typo on " | %p.s., note the typo on "conditon" | ||
b=double(cell2mat({expinfo.data.block})); %what block is each trial? | b=double(cell2mat({expinfo.data.block})); %what block is each trial? | ||
bnums=unique(b); %what are the different blocks? | |||
lookup=[0,1;0,2]; %condition codes that make up each block condition | |||
bcodes=[1,2];%code assigned to each block condition | |||
schedule=zeros(1,vols(end));%blank schedule preallocated for each volume | |||
%%This loop will iterate through all the numbered blocks and use the lookup | |||
%%table to determine which block code to assign each block, depending on | |||
%%the individual trial conditions present in that block. | |||
%%Then, all individual volumes that belong to that block will get assigned | |||
%%that condition code. Anything not assigned a block code will remain '0' | |||
%%(or 'rest'/'baseline') | |||
for i=1:length(bnums) | |||
idx=find(b==bnums(i));%get indices of current block | |||
codes=unique(cond(idx));%what conditions are represented in this block? | |||
blockcondition=bcodes(ismember(lookup, codes, 'rows'));%lookup the blockcode (in bcodes) that matches the conditions in this block | |||
firstvol=vols(idx(1)); | |||
lastvol=vols(idx(end)); | |||
schedule(firstvol:lastvol)=blockcondition; | |||
end |
Revision as of 17:20, 11 July 2016
Determine Targets
Classifying Task vs Baseline Blocks
If the goal is simply to distinguish task block from rest periods, use findBlockBoundaries
as follows:
b=bookends{1}; %creating targets for first run, so use first set of bookends s=zeros(1,b(end)); %1 zero for each volume -- default=baseline for block=1:size(b,1) s(b(block,1):b(block,2))=1; %block volumes get a '1' end
Classifying Task Blocks
If blocks are associated with different tasks to be classified, the schedule vector, s can be created similarly, but with some modification. Here's some examples.
TR=2.047; %the fMRI TR is 2.047 seconds in this example t=cell2mat({expinfo.data.timestamp}); vols=floor(t/TR)+1; %convert the timestamps into volume numbers cond=double(cell2mat({expinfo.data.conditon})); %what condition is each trial? %p.s., note the typo on "conditon" b=double(cell2mat({expinfo.data.block})); %what block is each trial? bnums=unique(b); %what are the different blocks? lookup=[0,1;0,2]; %condition codes that make up each block condition bcodes=[1,2];%code assigned to each block condition schedule=zeros(1,vols(end));%blank schedule preallocated for each volume
%%This loop will iterate through all the numbered blocks and use the lookup %%table to determine which block code to assign each block, depending on %%the individual trial conditions present in that block. %%Then, all individual volumes that belong to that block will get assigned %%that condition code. Anything not assigned a block code will remain '0' %%(or 'rest'/'baseline') for i=1:length(bnums) idx=find(b==bnums(i));%get indices of current block codes=unique(cond(idx));%what conditions are represented in this block? blockcondition=bcodes(ismember(lookup, codes, 'rows'));%lookup the blockcode (in bcodes) that matches the conditions in this block firstvol=vols(idx(1)); lastvol=vols(idx(end)); schedule(firstvol:lastvol)=blockcondition; end