matlab提取txt文件的第一列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab提取txt文件的第一列相关的知识,希望对你有一定的参考价值。

有txt文件,里面包含了两列数据:

现在我想提取出第一列,并把它保存在一个新的.txt文件里。请问应该怎么写程序~谢谢各位

记事本中文本内容如下:

 解答:

oldf = \'d:\\matlabwork\\oldf.txt\';
dt = textread(oldf);
dd = dt(:,1);
newf = \'d:\\matlabwork\\newf.txt\';
save(newf,\'dd\',\'-ascii\');                    % 存为文本文件

    默认精度只能到小数点后两位,如果要达到原来的有六位小数可以这样做:

% 要增加精度加 \'-double\'
save(newf,\'dd\',\'-ascii\',\'-double\');

    由于double精度太多了,变成 6.3467453393499996e+005了,假如原来的那么多位就好,要怎么弄呢?可以这么做

如下:

dlmwrite(newf, dd, \'delimiter\', \' \', \'precision\', \'%6.6f\', \'newline\', \'pc\')

参考技术A 先把该文件复制到MATLAB工作目录,
然后
load 文件名.txt
会得到一个n*2的矩阵,保存在变量中,假设是变量date,然后再输入
a=date(:,1);
然后再输入:
save a,用记事本打开matlab.mat,另存为txt即可追问

能够直接给代码么~~~我不懂matlab,你说的这些我都不明白呢。谢谢~

参考技术B 你用load函数加载进去,比如这么写
d = load('txt文件的路劲');
col1 = d(:,1); %col1应该就是第一列的数据了,即取d的第一列
参考技术C oldf = 'd:\matlabwork\oldf.txt';
dt = textread(oldf);
dd = dt(:,1);
newf = 'd:\matlabwork\newf.txt';
save(newf,'dd','-ascii'); % 存为文本文件追问

请问精度只能到小数点后两位吗?可是原来的有六位小数呢!

追答

% 要增加精度加 '-double'
save(newf,'dd','-ascii','-double');

追问

double精度太多了,变成 6.3467453393499996e+005了,我要保持原来的那么多位就好,该怎么弄呢?

追答

dlmwrite(newf, dd, 'delimiter', ' ', 'precision', '%6.6f', 'newline', 'pc')

本回答被提问者和网友采纳

如何获得comm输出的第一列?

所以我试图使用awk获得第一列通信输出。我读到Tab被用作comm的分隔符,所以我做了:

awk -F"	" '{print $1}' comm-result.txt

使用comm-result.txt包含输出:

comm -3 file1 file2

但这似乎不起作用。

这个推荐还将空格字符作为分隔符,当我的文件包含多个空格时,我得到了奇怪的结果。

我怎么才能从comm获得第一列?

答案

“所以我试图获得第一列通信输出”

comm file1 file2”输出的第一列包含file1独有的行。您可以通过简单地使用comm(抑制-2独有的行)和file2(抑制两个文件中出现的行)调用-3来跳过后处理。

comm -2 -3 file1 file2   # will show only lines unique to file1

但是,如果您别无选择,只能处理comm的预运行输出,那么作为Carl mentionedcut将是一个选项:

cut -f1 comm-results.txt

但是,对于第1列为空的情况,这会导致空行。要解决这个问题,也许awk可能更适合:

awk -F"	" '{if ($1) print $1}' comm-results.txt
     ----    ----------------
      |                     |
   Use tab as delimiter     |
                            +-- only print if not empty
另一答案

对于这个问题,cut(1)可能是比awk更好的选择。

另一答案

你可以使用comm-2-3(作为already explained above),或者使用commgrep一样:

grep -o '^S+' <(comm file1 file2)

所以输出不包含任何尾随空格。这对非comm命令很有用。

以上是关于matlab提取txt文件的第一列的主要内容,如果未能解决你的问题,请参考以下文章

Matlab怎么读取txt文件,现有如下数据分别赋予X(第一列),Y(第二列),Z(第三列) 程序怎么编?

Matlab怎么读取txt文件,现有如下数据分别赋予X(第一列),Y(第二列),Z(第三列) 程序怎么编?

matlab,两个txt文件想合并,一个是一列文件名,“0001.jpg”一直到“2000.jp

matlab里哪个函数是txt文件读取一列一列的

如何用批处理命令把1个文件夹里多个csv文件的某一列合并成一个txt

matlab中如何读取多个txt文件中的某一行的数据