当我去导入数据矩阵时,在第一列的第一行中,每个新的时间数据都有一个标记,这个标记干扰了MATLAB如何导入数据。
有没有办法对此进行编码?
例如:
'> 1 6 1 1 -0.00161
1 6 1 2 -0.00140
1 6 1 3 -0.00145
1 6 1 4 -0.00153
1 6 1 5 -0.00120
1 6 1 6 -0.00076
我不希望手动从数据中删除>
,因为可能有数千个。
答案 0 :(得分:0)
如果您在* nix系统下或者您有cygwin,那么如果您将此输出发送到命令>
,则可以删除这些sed
。例如:
user@host $ cat out.txt
>0 5 3 4
0 6 4 3
>1 5 3 6
1 2 4 5
user@host $ cat out.txt |sed 's/>//g'
如果需要将此新输出存储到文件中: user @ host $ cat out.txt
0 5 3 4
0 6 4 3
>1 5 3 6
1 2 4 5
user@host $ cat out.txt |sed 's/>//g' > out_without_unneeded_symbols.txt
user@host $ cat out_without_unneeded_symbols.txt
0 5 3 4
0 6 4 3
1 5 3 6
1 2 4 5
如果此输出取自当前目录中的某个程序:
user@host $ ./some_program |sed 's/>//g'
答案 1 :(得分:0)
这是MATLAB中的一种可能的实现方式:
% read file lines as a cell array of strings
fid = fopen('file.dat', 'rt');
C = textscan(fid, '%s', 'Delimiter','');
C = C{1};
fclose(fid);
% find marker locations
markers = strncmp('>', C, 1);
% remove markers
C = regexprep(C, '^>', '');
% parse numbers into a numeric matrix
X = regexp(C, '\s+', 'split');
X = str2double(vertcat(X{:}));
结果:
% the full matrix
>> X
X =
0 5 3 4
0 6 4 3
1 5 3 6
1 2 4 5
% only the marked rows
>> X(markers,:)
ans =
0 5 3 4
1 5 3 6