b0a2dbf1076c250822bde906330ec8bace1d4896
Christoph Budziszewski begin SOM implementation

Christoph Budziszewski authored 15 years ago

1) %% subject loop
2) function decode = som_combined_subject_batch(header,subjectdata,somOpts)
3) 
Christoph Budziszewski manual renamings, better FB...

Christoph Budziszewski authored 15 years ago

4) somOpts.size = [3 3];
5) somOpts.lattice = 'rect';
6) 
Christoph Budziszewski begin SOM implementation

Christoph Budziszewski authored 15 years ago

7) addpath 'somtoolbox2';
8) 
Christoph Budziszewski manual renamings, better FB...

Christoph Budziszewski authored 15 years ago

9) % nSubjects = numel(subjectdata);
10) % if(nSubjects < 2) 
11) %     error('SVMCrossVal:xsvmSubjectLoop:tooFewSubjects','You need at least 2 Subjects in this Across-Subject analysis!');
12) % end
Christoph Budziszewski begin SOM implementation

Christoph Budziszewski authored 15 years ago

13) 
14) RANDOMIZE_DATAPOINTS = 1;
15) 
16) decode = struct;
17) decode.decodePerformance = [];
18) decode.rawTimeCourse     = [];
19) 
20) disp(sprintf('computinig additional datastructs for %u subjects',nSubjects));
21) 
22) timeline = header.timeline;
23) timeline.frameShiftStart = header.frameShift.frameShiftStart;
24) timeline.frameShiftEnd   = header.frameShift.frameShiftEnd;
25) timeline.decodeDuration  = header.frameShift.decodeDuration;
26) 
27) % TimePointMatrix
28) for subjectDataID = 1:nSubjects
29)     currentSubject = subjectdata{subjectDataID};
30)     timePointArgs.pst           = currentSubject.pst;
31)     timePointArgs.labelMap      = LabelMap(header.classDef.labelCells,header.classDef.conditionCells);
32)     timePointArgs.eventList     = header.classDef.eventMatrix;
33) 
34)     timePointMatrix{subjectDataID} = buildTimePointMatrix(timeline,timePointArgs);
35)     
36)     decode.rawTimeCourse = [decode.rawTimeCourse currentSubject.pst];
37) end
38) 
39) % timeframe x-subject validation
40) timeLineStart   = timeline.frameShiftStart;
41) timeLineEnd     = timeline.frameShiftEnd;
42) 
43) display(sprintf('%u -fold cross validation for %u timeslices.\n',nSubjects,size(1:timeLineEnd-timeLineStart+1,2)));
44) % disp(sprintf('Press ANY-Key to continue.\n Use Retrun if your Keyboard lacks the ANY-Key.'));
45) % pause
46) 
47) for timeIndex = 1:timeLineEnd-timeLineStart+1
Christoph Budziszewski manual renamings, better FB...

Christoph Budziszewski authored 15 years ago

48)     cross_value = [];
49)     for validationSubjectID = 1:nSubjects
Christoph Budziszewski begin SOM implementation

Christoph Budziszewski authored 15 years ago

50)         svm_train_label = [];
51)         svm_train_data  = [];
52)         svm_validation_label = [];
53)         svm_validation_data  = [];
54)         for subjectDataID = 1:nSubjects
55)             svmstruct = calculateSVMTables(timePointMatrix{subjectDataID},timeIndex);
Christoph Budziszewski manual renamings, better FB...

Christoph Budziszewski authored 15 years ago

56)             if subjectDataID == validationSubjectID
57)                 svm_validation_label = svmstruct.svmlabel;
58)                 svm_validation_data  = svmstruct.svmdata;
59)             else
60)                 svm_train_label = [svm_train_label; svmstruct.svmlabel];
61)                 svm_train_data  = [svm_train_data;  svmstruct.svmdata];
62)             end
Christoph Budziszewski begin SOM implementation

Christoph Budziszewski authored 15 years ago

63)         end
64)         
65)         if RANDOMIZE_DATAPOINTS
66)             rndindex  = randperm(length(svm_train_label));
67)             svm_train_data   = svm_train_data(rndindex,:);
68)             svm_train_label  = svm_train_label(rndindex);
69)         end
70) 
Christoph Budziszewski manual renamings, better FB...

Christoph Budziszewski authored 15 years ago

71)         [sD sM] = train_som(svm_train_label, svm_train_data, somOpts);
72) 
73)         performance = som_decode(sD, sM, svm_validation_data,svm_validation_label);
Christoph Budziszewski begin SOM implementation

Christoph Budziszewski authored 15 years ago

74)         
Christoph Budziszewski manual renamings, better FB...

Christoph Budziszewski authored 15 years ago

75)         cross_value = [cross_value performance];
Christoph Budziszewski begin SOM implementation

Christoph Budziszewski authored 15 years ago

76)     decode.decodePerformance = [decode.decodePerformance; cross_value];
77) end
Christoph Budziszewski manual renamings, better FB...

Christoph Budziszewski authored 15 years ago

78)    display('decode done'); 
Christoph Budziszewski begin SOM implementation

Christoph Budziszewski authored 15 years ago

79) end