58 #include <QtCore/QCoreApplication>
84 int main(
int argc,
char *argv[])
86 QCoreApplication a(argc, argv);
89 QFile t_sampleFile(
"./MNE-sample-data/MEG/sample/sample_audvis-ave.fif");
93 fiff_int_t coil1,coil2;
95 QChar lastone,lasttwo;
97 MatrixXi pairs(p_FiffEvokedSet.info.nchan,2);
98 fiff_double_t base1,base2;
100 QStringList ch_sel_names;
103 bool do_baseline =
false;
106 fiff_double_t bmin = 0;
107 fiff_double_t bmax = 0.231;
109 for(qint32 i=0; i < p_FiffEvokedSet.info.nchan-1; ++i) {
111 coil1 = p_FiffEvokedSet.info.chs.at(i).coil_type;
112 coil2 = p_FiffEvokedSet.info.chs.at(i+1).coil_type;
113 if (coil1 == coil2 && (coil1 == 2 || coil1 == 3012 || coil1 == 3013)) {
114 one = p_FiffEvokedSet.info.ch_names[i];
115 two = p_FiffEvokedSet.info.ch_names[i+1];
116 lastone = one.at(one.size()-1);
117 lasttwo = one.at(two.size()-1);
120 if((one.left(3) ==
"MEG") && (two.left(3) ==
"MEG") && (one.left(one.size()-1) == two.left(two.size()-1)) && ((one.right(1)==
"2" && two.right(1)==
"3") || (one.right(1)==
"3" && two.right(1)==
"2"))) {
121 pairs(npair,0) = (int) i;
122 pairs(npair,1) = i+1;
130 printf(
"\nComputing the amplitudes");
132 printf(
"(Baseline = %7.1f ... %7.1f ms)',1000*bmin,1000*bmax)",1000*bmin,1000*bmax);
136 for(qint32 i=0; i < p_FiffEvokedSet.evoked.size()-1; ++i) {
138 b1 = (p_FiffEvokedSet.info.sfreq*bmin) - p_FiffEvokedSet.evoked[i].first;
139 b2 = (p_FiffEvokedSet.info.sfreq*bmax) - p_FiffEvokedSet.evoked[i].last;
141 if(b2 > p_FiffEvokedSet.evoked[i].data.cols()) b2 = p_FiffEvokedSet.evoked[i].data.cols();
152 for(qint32 p=0; p < npair; ++p) {
157 Matrix<double,1,Dynamic> tmpbase1;
158 Matrix<double,1,Dynamic> tmpbase2;
160 tmpbase1 = p_FiffEvokedSet.evoked[i].data.block(pairs(p,0),(b2-b1),1,p_FiffEvokedSet.evoked[i].data.cols());
161 base1 = tmpbase1.sum()/tmpbase1.rows();
162 tmpbase2 = p_FiffEvokedSet.evoked[i].data.block(pairs(p,1),(b2-b1),1,p_FiffEvokedSet.evoked[i].data.cols());
163 base2 = tmpbase2.sum()/tmpbase2.rows();
165 tmparray = ((p_FiffEvokedSet.evoked[i].data.row(p0).array()-base1).square()) + ((p_FiffEvokedSet.evoked[i].data.row(p1).array()-base2).square()).square();
166 p_FiffEvokedSet.evoked[i].data.row(p0) = tmparray.matrix();
169 tmparray = ((p_FiffEvokedSet.evoked[i].data.row(p0).array()).square()) + ((p_FiffEvokedSet.evoked[i].data.row(p1).array()).square());
170 p_FiffEvokedSet.evoked[i].data.row(p0) = tmparray.matrix();
178 for(qint16 i=0; i < npair; ++i) {
179 ch_sel_names.append(p_FiffEvokedSet.info.ch_names.at(i));
184 for(qint16 p=0; p < p_FiffEvokedSet.info.nchan; ++p) {
185 if((p_FiffEvokedSet.info.channel_type(p) ==
"grad") || (p_FiffEvokedSet.info.channel_type(p) ==
"mag")) {
187 ch_sel_names.append(p_FiffEvokedSet.info.ch_names.at(p));
192 if(!p_FiffEvokedSet.info.bads.isEmpty()) {
195 for(qint32 i=0; i < npair; ++i) {
196 one = p_FiffEvokedSet.info.ch_names.at(pairs(i,0));
197 two = p_FiffEvokedSet.info.ch_names.at(pairs(i,1));
200 if(!p_FiffEvokedSet.info.bads.contains(one) && p_FiffEvokedSet.info.bads.contains(two))
201 p_FiffEvokedSet.info.bads.append(two);
202 if(p_FiffEvokedSet.info.bads.contains(one) && !p_FiffEvokedSet.info.bads.contains(two))
203 p_FiffEvokedSet.info.bads.append(one);
208 p_FiffEvokedSet.pick_channels(ch_sel_names);
FIFF class declaration, which provides static wrapper functions to stay consistent with mne matlab to...