Christoph Budziszewski commited on 2009-08-05 14:12:52
Zeige 3 geänderte Dateien mit 75 Einfügungen und 5 Löschungen.
git-svn-id: https://svn.discofish.de/MATLAB/spmtoolbox/SVMCrossVal@203 83ab2cfd-5345-466c-8aeb-2b2739fb922d
... | ... |
@@ -16,14 +16,13 @@ SubjectID = subjectData; |
16 | 16 |
|
17 | 17 |
nSubjects = size(SubjectID,2); |
18 | 18 |
|
19 |
+nTrials = getNTrials(psth); |
|
19 | 20 |
|
20 | 21 |
f = figure; |
21 | 22 |
|
22 | 23 |
hold on; |
23 | 24 |
chanceLevel = 100/nClasses; |
24 |
- goodPredictionLevel = chanceLevel*1.5; |
|
25 |
- plot([psthStart psthEnd],[chanceLevel chanceLevel],'k:'); |
|
26 |
- plot([psthStart psthEnd],[goodPredictionLevel goodPredictionLevel],'k:'); |
|
25 |
+ |
|
27 | 26 |
axis([psthStart psthEnd 0 100]) |
28 | 27 |
xlabel('time [sec]'); |
29 | 28 |
ylabel('decode performance [%]'); |
... | ... |
@@ -41,12 +40,40 @@ nSubjects = size(SubjectID,2); |
41 | 40 |
end |
42 | 41 |
plotDecodePerformanceWithSE(frameStart,frameEnd,decodePerformance) |
43 | 42 |
end |
43 |
+ |
|
44 |
+ plot([psthStart psthEnd],[chanceLevel chanceLevel],'k:'); |
|
45 |
+ |
|
46 |
+ plotBinConfidenceIntervall(psthStart,psthEnd,nTrials,0.05,chanceLevel/100,'r'); |
|
47 |
+ plotBinConfidenceIntervall(psthStart,psthEnd,nTrials,0.01,chanceLevel/100,'g'); |
|
48 |
+ |
|
44 | 49 |
hold off; |
45 | 50 |
|
46 | 51 |
% setTitle(f,header,decode,subjectData); |
47 | 52 |
|
48 | 53 |
end |
49 | 54 |
|
55 |
+function plotBinConfidenceIntervall(pStart,pEnd,nTrials,alpha,limit,color) |
|
56 |
+ [pLevel Z] = rev_ki_bin(nTrials,alpha,limit); |
|
57 |
+ [lower upper proz] = ki_bin(Z,nTrials,alpha); |
|
58 |
+ |
|
59 |
+ plot([pStart pEnd],[pLevel*100 pLevel*100],[color ':']); |
|
60 |
+ |
|
61 |
+ plot([pStart pEnd],[lower*100 lower*100],[color '-.']); |
|
62 |
+ plot([pStart pEnd],[upper*100 upper*100],[color '-.']); |
|
63 |
+end |
|
64 |
+ |
|
65 |
+function n = getNTrials(psth) |
|
66 |
+nSubjects = size(psth,2); |
|
67 |
+ |
|
68 |
+n = 0; |
|
69 |
+for ns = 1:nSubjects |
|
70 |
+ nClasses = size(psth{ns},2); |
|
71 |
+ for nc = 1:nClasses |
|
72 |
+ n = n + size(psth{ns}{nc},1); |
|
73 |
+ end |
|
74 |
+end |
|
75 |
+end |
|
76 |
+ |
|
50 | 77 |
function plotClassPerformance(frameStart,frameEnd,decodePerformance,nClasses) |
51 | 78 |
for c = 1:size(decodePerformance,2) |
52 | 79 |
plot(frameStart:frameEnd, decodePerformance(:,c) ,[colorChooser(mod(c,nClasses)+3) '-']); |
... | ... |
@@ -76,6 +103,7 @@ PSTH_AXIS_MAX = 2; |
76 | 103 |
for timepoint = 1:size(psth{voxel}{label},2) |
77 | 104 |
psthData = nanmean(psth{voxel}{label}); |
78 | 105 |
end |
106 |
+ PSTH_AXIS_MAX = max(PSTH_AXIS_MAX,nanmax(psthData)); |
|
79 | 107 |
plot(psthStart:psthEnd,psthData,[colorChooser(voxel), lineStyleChooser(label)]); |
80 | 108 |
end |
81 | 109 |
end |
... | ... |
@@ -71,7 +71,11 @@ function ui_main(varargin) |
71 | 71 |
% MENUS |
72 | 72 |
|
73 | 73 |
savemenu = uimenu(frame,'Label','Save ...','Enable','on'); |
74 |
- uimenu(savemenu,'Label','Save All','Callback',{@mcb_save,model},'Enable','on'); |
|
74 |
+ uimenu(savemenu,'Label','Save Parameter','Callback',{@mcb_save,'PARAMS',model},'Enable','on'); |
|
75 |
+ uimenu(savemenu,'Label','Save ImageProcesseding Data','Callback',{@mcb_save,'IMAGEPROCESSING',model},'Enable','on'); |
|
76 |
+ uimenu(savemenu,'Label','Load ImageProcesseding Data','Callback',{@mcb_load,'IMAGEPROCESSING',model},'Enable','on'); |
|
77 |
+ uimenu(savemenu,'Label','Save Decode Data','Callback',{@mcb_save,'DECODE',model},'Enable','on'); |
|
78 |
+ uimenu(savemenu,'Label','Load Decode Data','Callback',{@mcb_load,'DECODE',model},'Enable','on'); |
|
75 | 79 |
|
76 | 80 |
studySelectMenu = uimenu(frame,'Label','Study ...','Enable','on'); |
77 | 81 |
uimenu(studySelectMenu,'Label','*new Study*','Callback',{@mcb_new_study,studySelectMenu,model}); |
... | ... |
@@ -473,9 +477,47 @@ end |
473 | 477 |
|
474 | 478 |
%%%%%%%%%% menu callbacks |
475 | 479 |
|
476 |
-function mcb_save(src,evnt,model) |
|
480 |
+function mcb_save(src,evnt,token,model) |
|
481 |
+switch token |
|
482 |
+ case 'PARAMS' |
|
477 | 483 |
studyID = get(model.txtStudyID,'String'); |
478 | 484 |
saveStudy(studyID,model); |
485 |
+ case 'IMAGEPROCESSING' |
|
486 |
+ disp('save img data..'); |
|
487 |
+ [FileName,PathName,FilterIndex] = uiputfile('*.mat','Save ImageProcessing Data') ; |
|
488 |
+ if(~strcmp(FileName,'')) |
|
489 |
+ evalin('base', sprintf('save(''%s'',''%s'')',fullfile(PathName,FileName),'preprocessedData')); |
|
490 |
+ disp('saved'); |
|
491 |
+ end |
|
492 |
+% [FileName,PathName,FilterIndex] = uigetfile('*.mat','Load ImageProcessing Data') |
|
493 |
+% evalin('base', sprintf('load(%s,%s)',fullfile(PathName,FileName),'preprocessedData')); |
|
494 |
+ case 'DECODE' |
|
495 |
+ disp('save decode data..'); |
|
496 |
+ [FileName,PathName,FilterIndex] = uiputfile('*.mat','Save Decode Data') ; |
|
497 |
+ if(~strcmp(FileName,'')) |
|
498 |
+ evalin('base', sprintf('save(''%s'',''%s'')',fullfile(PathName,FileName),'decode')); |
|
499 |
+ disp('saved'); |
|
500 |
+ end |
|
501 |
+end |
|
502 |
+end |
|
503 |
+ |
|
504 |
+function mcb_load(src,evnt,token,model) |
|
505 |
+switch token |
|
506 |
+ case 'IMAGEPROCESSING' |
|
507 |
+ disp('load img data..'); |
|
508 |
+ [FileName,PathName,FilterIndex] = uigetfile('*.mat','Load ImageProcessing Data') ; |
|
509 |
+ if(~strcmp(FileName,'')) |
|
510 |
+ evalin('base', sprintf('load(''%s'',''%s'')',fullfile(PathName,FileName),'preprocessedData')); |
|
511 |
+ disp('done'); |
|
512 |
+ end |
|
513 |
+ case 'DECODE' |
|
514 |
+ disp('load decode data..'); |
|
515 |
+ [FileName,PathName,FilterIndex] = uigetfile('*.mat','Load Decode Data') ; |
|
516 |
+ if(~strcmp(FileName,'')) |
|
517 |
+ evalin('base', sprintf('load(''%s'',''%s'')',fullfile(PathName,FileName),'decode')); |
|
518 |
+ disp('done'); |
|
519 |
+ end |
|
520 |
+end |
|
479 | 521 |
end |
480 | 522 |
|
481 | 523 |
function mcb_update_subjects(src,evnt,model) |