Christoph Budziszewski commited on 2009-04-26 22:01:30
Zeige 3 geänderte Dateien mit 20 Einfügungen und 10 Löschungen.
git-svn-id: https://svn.discofish.de/MATLAB/spmtoolbox/SVMCrossVal@186 83ab2cfd-5345-466c-8aeb-2b2739fb922d
| ... | ... |
@@ -13,7 +13,7 @@ pstopts = args.psthOpts; |
| 13 | 13 |
pstopts.eventList = args.eventList; |
| 14 | 14 |
pstopts.sessionList = sessionlist; |
| 15 | 15 |
|
| 16 |
-radius = fbsargs.radius; |
|
| 16 |
+radiusList = fbsargs.radius; |
|
| 17 | 17 |
|
| 18 | 18 |
timeline = header.timeline; |
| 19 | 19 |
timeline.frameShiftStart = header.frameShift.frameShiftStart; |
| ... | ... |
@@ -60,7 +60,7 @@ for s = 1:nSubjects |
| 60 | 60 |
indexToCoordMap = java.util.HashMap; |
| 61 | 61 |
coordToIndexMap = java.util.HashMap; |
| 62 | 62 |
for iVoxel = 1:nVoxel |
| 63 |
- coord = [x(iVoxel) y(iVoxel) z(iVoxel)] |
|
| 63 |
+ coord = [x(iVoxel) y(iVoxel) z(iVoxel)]; |
|
| 64 | 64 |
a = java.util.Vector(3,0); |
| 65 | 65 |
a.add(0,coord(1)); |
| 66 | 66 |
a.add(1,coord(2)); |
| ... | ... |
@@ -104,7 +104,7 @@ for s = 1:nSubjects |
| 104 | 104 |
pause(0.001) % flush system event queue (respond to ctrl-c) |
| 105 | 105 |
tic |
| 106 | 106 |
|
| 107 |
- display(sprintf('rastering %g coordinates with approx. %g mm radius',nVoxel,radius));
|
|
| 107 |
+ display(sprintf('rastering %g coordinates',nVoxel));
|
|
| 108 | 108 |
% for each timeslice |
| 109 | 109 |
globalStart = timeline.psthStart; |
| 110 | 110 |
globalEnd = timeline.psthEnd; |
| ... | ... |
@@ -134,6 +132,7 @@ if isempty( fbsargs.timeline ) |
| 134 | 132 |
fbsTimeLine = 1:nSamplePoints; |
| 135 | 133 |
fbsTimeLine = fbsTimeLine +globalStart; |
| 136 | 134 |
else |
| 135 |
+ %preferred! |
|
| 137 | 136 |
fbsTimeLine = fbsargs.timeline; |
| 138 | 137 |
end |
| 139 | 138 |
|
| ... | ... |
@@ -144,16 +142,18 @@ end |
| 144 | 142 |
frameStartIdx = floor(-globalStart+1+timeShiftIdx - 0.5*decodeDuration); |
| 145 | 143 |
frameEndIdx = min(ceil(frameStartIdx+decodeDuration + 0.5*decodeDuration),-globalStart+globalEnd); |
| 146 | 144 |
|
| 147 |
- img3D = zeros(size(mask_image)); %output image prepare |
|
| 145 |
+ for r = radiusList |
|
| 146 |
+ img3D{r} = zeros(size(mask_image)); %output image prepare
|
|
| 147 |
+ end |
|
| 148 | 148 |
|
| 149 | 149 |
for iVoxel = 1:nVoxel % linear structure avoids 3D-Loop. |
| 150 | 150 |
if (mod(iVoxel,100)== 0) |
| 151 | 151 |
display(sprintf('Status: %03u / %03u Timepoints, %05u / %05u Coordinates',find(fbsTimeLine == timeShiftIdx),length(fbsTimeLine),iVoxel,nVoxel));
|
| 152 | 152 |
pause(0.001) %flush system event queue |
| 153 | 153 |
end |
| 154 |
+ for radius = radiusList |
|
| 154 | 155 |
% get surrounding coordinate-IDs within radius |
| 155 | 156 |
sphere = fbs_buildSphere(mapping,iVoxel,radius,vdim); |
| 156 |
-% pause |
|
| 157 | 157 |
|
| 158 | 158 |
%build svm inputmatrix |
| 159 | 159 |
svmdata = []; |
| ... | ... |
@@ -180,18 +180,21 @@ end |
| 180 | 180 |
decode = svm_single_crossval(svmlabel,svmdata,svmopts); |
| 181 | 181 |
% save the decode value to the corresponding coordinate |
| 182 | 182 |
|
| 183 |
- coord = mapping.indexToCoordMap.get(iVoxel) |
|
| 183 |
+ coord = mapping.indexToCoordMap.get(iVoxel); |
|
| 184 | 184 |
x = coord(1); |
| 185 | 185 |
y = coord(2); |
| 186 | 186 |
z = coord(3); |
| 187 | 187 |
|
| 188 |
- img3D(x,y,z) = ((decode/100)-0.5)*2; % range [-1:1] |
|
| 188 |
+ img3D{radius}(x,y,z) = ((decode/100)-0.5)*2; % range [-1:1]
|
|
| 189 | 189 |
|
| 190 |
+ end %for each radius |
|
| 190 | 191 |
end %for each voxel |
| 191 | 192 |
|
| 192 |
- nii = make_nii(img3D,vdim,mask_image.hdr.hist.originator(1:3),16,... |
|
| 193 |
+ for radius = radiusList |
|
| 194 |
+ nii = make_nii(img3D{radius},vdim,mask_image.hdr.hist.originator(1:3),16,...
|
|
| 193 | 195 |
sprintf('decode performance, time relative to onset: %g to %g sec',frameStartIdx,frameEndIdx));
|
| 194 |
- save_nii(nii,fullfile(savePath,sprintf('%s-%03g',subjects{s}.name,timeShiftIdx)));
|
|
| 196 |
+ save_nii(nii,fullfile(savePath,sprintf('%s-r%g-t%+03g',subjects{s}.name,radius,timeShiftIdx)));
|
|
| 197 |
+ end |
|
| 195 | 198 |
end %for each timeslice |
| 196 | 199 |
display('rastering done');
|
| 197 | 200 |
display(sprintf('result images saved to %s',savePath));
|
| 198 | 201 |