manual renamings, better FB...
Christoph Budziszewski authored 15 years ago
|
1) %% subject loop
2) function decode = som_xsubject_performance(header,subjectdata,somOpts)
3)
4) addpath 'somtoolbox2';
5)
6) nSubjects = numel(subjectdata);
7) if(nSubjects < 2)
8) error('SVMCrossVal:somXSubjectPerformance:tooFewSubjects','You need at least 2 Subjects in this Across-Subject analysis!');
9) end
10)
|
added some batch files, wor...
Christoph Budziszewski authored 15 years ago
|
11) RANDOMIZE_DATAPOINTS = somOpts.rnd;
12) NAN_AS_ZERO = somOpts.nantozero;
|
manual renamings, better FB...
Christoph Budziszewski authored 15 years ago
|
13)
14) decode = struct;
15) decode.decodePerformance = [];
16) decode.rawTimeCourse = [];
17)
18) disp(sprintf('computinig additional datastructs for %u subjects',nSubjects));
19)
20) timeline = header.timeline;
21) timeline.frameShiftStart = header.frameShift.frameShiftStart;
22) timeline.frameShiftEnd = header.frameShift.frameShiftEnd;
23) timeline.decodeDuration = header.frameShift.decodeDuration;
24)
25) % TimePointMatrix
26) for subjectDataID = 1:nSubjects
27) currentSubject = subjectdata{subjectDataID};
28) timePointArgs.pst = currentSubject.pst;
29) timePointArgs.labelMap = LabelMap(header.classDef.labelCells,header.classDef.conditionCells);
30) timePointArgs.eventList = header.classDef.eventMatrix;
31)
32) timePointMatrix{subjectDataID} = buildTimePointMatrix(timeline,timePointArgs);
33)
34) decode.rawTimeCourse = [decode.rawTimeCourse currentSubject.pst];
35) end
36)
37) % timeframe x-subject validation
38) timeLineStart = timeline.frameShiftStart;
39) timeLineEnd = timeline.frameShiftEnd;
40)
41) display(sprintf('%u -fold cross validation for %u timeslices.\n',nSubjects,size(1:timeLineEnd-timeLineStart+1,2)));
42) % disp(sprintf('Press ANY-Key to continue.\n Use Retrun if your Keyboard lacks the ANY-Key.'));
43) % pause
44)
45) for timeIndex = 1:timeLineEnd-timeLineStart+1
46) cross_value = [];
47) for validationSubjectID = 1:nSubjects
48) svm_train_label = [];
49) svm_train_data = [];
50) svm_validation_label = [];
51) svm_validation_data = [];
52) for subjectDataID = 1:nSubjects
53) svmstruct = calculateSVMTables(timePointMatrix{subjectDataID},timeIndex);
54) if subjectDataID == validationSubjectID
55) svm_validation_label = svmstruct.svmlabel;
56) svm_validation_data = svmstruct.svmdata;
57) else
58) svm_train_label = [svm_train_label; svmstruct.svmlabel];
59) svm_train_data = [svm_train_data; svmstruct.svmdata];
60) end
61) end
62)
63) if RANDOMIZE_DATAPOINTS
64) rndindex = randperm(length(svm_train_label));
65) svm_train_data = svm_train_data(rndindex,:);
66) svm_train_label = svm_train_label(rndindex);
67) end
68)
|
added some batch files, wor...
Christoph Budziszewski authored 15 years ago
|
69) if NAN_AS_ZERO
70) svm_train_data(isnan(svm_train_data))=0;
71) end
72)
73) if isempty(svm_train_data)
74) performance = 0;
75) else
76) [sD sM] = som_train(svm_train_label, svm_train_data, somOpts);
|
manual renamings, better FB...
Christoph Budziszewski authored 15 years ago
|
77)
|
added some batch files, wor...
Christoph Budziszewski authored 15 years ago
|
78) performance = som_decode(sM, svm_validation_data,svm_validation_label);
79) end
|