Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何导入带有标记的数据-但不包括这些标记?_Arrays_Matlab_File Io_Matrix_Data Import - Fatal编程技术网

Arrays 如何导入带有标记的数据-但不包括这些标记?

Arrays 如何导入带有标记的数据-但不包括这些标记?,arrays,matlab,file-io,matrix,data-import,Arrays,Matlab,File Io,Matrix,Data Import,当我要导入一个数据矩阵时,在第一列的第一行中有一个标记,表示每次获取数据时,该标记都会干扰MATLAB导入数据的方式 有没有办法把它编码出来 例如: '>16.11-0.00161 1.612-0.00140 1.613-0.00145 1.614-0.00153 1.615-0.00120 16-0.00076 我不希望手动从数据中删除,因为可能会有数千个。如果您使用*nix系统或cygwin,那么如果您将此输出发送到命令sed,则可以删除这些。例如: user@host $ cat out.

当我要导入一个数据矩阵时,在第一列的第一行中有一个标记,表示每次获取数据时,该标记都会干扰MATLAB导入数据的方式

有没有办法把它编码出来

例如:

'>16.11-0.00161

1.612-0.00140

1.613-0.00145

1.614-0.00153

1.615-0.00120

16-0.00076


我不希望手动从数据中删除
,因为可能会有数千个。

如果您使用*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

0534

如果此输出来自当前目录下的某个程序:

user@host $ ./some_program |sed 's/>//g'

以下是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

您从何处导入数据?我正在从一个txt文件导入数据,然后尝试对数据进行排序和平均。但是“>”现在是代码中的活扳手我在复制你的结果时遇到了麻烦,但我感觉这是我的问题。我确实发现使用手动导入选项时,数据将不带“>”导入,在导入过程中是否有一种简单的方法将其编程到matlab中,或者只有在手动导入时才有可能?如果矩阵中的数字为1 0.05 4 5 1 66 1.5 4等,vertcat将给我一个关于尺寸的错误do。有没有快速解决这个问题的方法?谢谢请在问题中发布此数据的示例(格式正确)。。前面显示的数据很好,我用一个更好的例子解决了这个问题。我道歉。我忘了matlab在文件开头的一句话有多敏感了?请再次检查格式,并将文本缩进4个空格以正确呈现。。。这类问题很难回答,除非你展示了数据的实际部分,而不是虚构的例子!不,单引号不是文件的一部分。我不能让>在没有它的情况下出现。我再次表示歉意。
% 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