0001 function mne_write_cov(fid,cov)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032 me='MNE:mne_write_cov';
0033
0034 global FIFF;
0035 if isempty(FIFF)
0036 FIFF = fiff_define_constants();
0037 end
0038
0039 fiff_start_block(fid,FIFF.FIFFB_MNE_COV);
0040
0041
0042
0043 fiff_write_int(fid,FIFF.FIFF_MNE_COV_KIND,cov.kind);
0044 fiff_write_int(fid,FIFF.FIFF_MNE_COV_DIM,cov.dim);
0045 if cov.nfree > 0
0046 fiff_write_int(fid,FIFF.FIFF_MNE_COV_NFREE,cov.nfree);
0047 end
0048
0049
0050
0051 if ~isempty(cov.names)
0052 fiff_write_name_list(fid,FIFF.FIFF_MNE_ROW_NAMES,cov.names);
0053 end
0054
0055
0056
0057 if cov.diag
0058 fiff_write_double(fid,FIFF.FIFF_MNE_COV_DIAG,cov.data);
0059 else
0060 if issparse(cov.data)
0061 fiff_write_float_sparse_rcs(fid,FIFF.FIFF_MNE_COV,cov.data);
0062 else
0063 q = 1;
0064 vals = zeros(cov.dim*(cov.dim+1)/2,1);
0065 for j = 1:cov.dim
0066 for k = 1:j
0067 vals(q) = cov.data(j,k);
0068 q = q + 1;
0069 end
0070 end
0071 fiff_write_double(fid,FIFF.FIFF_MNE_COV,vals);
0072 end
0073 end
0074
0075
0076
0077 if ~isempty(cov.eig) && ~isempty(cov.eigvec)
0078 fiff_write_float_matrix(fid,FIFF.FIFF_MNE_COV_EIGENVECTORS,cov.eigvec);
0079 fiff_write_double(fid,FIFF.FIFF_MNE_COV_EIGENVALUES,cov.eig);
0080 end
0081
0082
0083
0084 fiff_write_proj(fid,cov.projs);
0085
0086
0087
0088 if ~isempty(cov.bads)
0089 fiff_start_block(fid,FIFF.FIFFB_MNE_BAD_CHANNELS);
0090 fiff_write_name_list(fid,FIFF.FIFF_MNE_CH_NAME_LIST,cov.bads);
0091 fiff_end_block(fid,FIFF.FIFFB_MNE_BAD_CHANNELS);
0092 end
0093
0094
0095
0096 fiff_end_block(fid,FIFF.FIFFB_MNE_COV);