Matlab读取txt文件并找出开头相同的行并输出成另一个txt文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab读取txt文件并找出开头相同的行并输出成另一个txt文件相关的知识,希望对你有一定的参考价值。

我想用matlab读取txt文件,然后找出文件中开头相同的那些列并输出。

比如txt文件如下:
bread diaper beer egg milk
milk diaper beer cook
bread milk diaper beer
bread butter diaper milk
coffee sweat cookie fish
bread butter coffee diaper milk egg
bread butter fish chicken
egg bread butter
fish diaper milk
coffee sweat chicken egg
每一行的数据数量不一定,而且可能还行有数字。我希望能把开头都为”bread“的那些行都选择出来并输出到另一个txt文件里。
我写的是:

a=load('sample.txt');
firstNum=a(:,1);
b=find(firstNum==1);
c=a(b,:);
disp(c);
但load貌似不能输入个数不一样且英文数字混合的文件,请教大神如何修改,谢谢了~~!!
错了,不是输出列,是输出开头相同的”行“,谢谢!!

参考技术A 关于文本数据读取我做过一些研究, 下面是解决你的问题的一个方法.

---- sample.txt ---------------------------
bread diaper beer egg milk
milk diaper beer cook
bread milk diaper beer
bread butter diaper milk
coffee sweat cookie fish
bread butter coffee diaper milk egg
bread butter fish chicken
egg bread butter
fish diaper milk
coffee sweat chicken egg

--- m file code ---------------------------
clc;
file = 'sample.txt';
fid = fopen(file,'r');
disp(['Reading file: ',file]);
linenumber = 0;
while ~feof(fid)
linenumber = linenumber + 1;
line = fgetl(fid);
if(line(1:6) == 'bread ')
disp([num2str(linenumber),':',line]);
end
end

---- output -------------------------------
Reading file: sample.txt
1:bread diaper beer egg milk
3:bread milk diaper beer
4:bread butter diaper milk
6:bread butter coffee diaper milk egg
7:bread butter fish chicken追问

哇,谢谢大神~~成功了,但请问如何将生成的新数组以txt文件导出呢?
我写的是:
fid1=fopen('E:\new.txt');
fprintf(fid1,[line]);
fclose(fid1);
但最后存进去的不对。。求指导~~谢谢!

追答

你只是缺少个换行符而已

fid1=fopen('E:\new.txt','w');
fprintf(fid1,[line,'\n']);
fclose(fid1);

追问

还是不对,只输出了一行。。大神能帮忙再看看吗?谢谢了~~

追答

我这边能正确运行的啊... 注意要把 fid1=fopen('E:\new.txt','w'); fclose(fid1);
放到循环外

追问

成功了!谢谢~!!

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

matlab怎么找到一个矩阵中所有相同的两行并返回行号

如题

参考技术A [b,c]=unique(a,'rows')这个可以返回唯一值的行和原来的行号本回答被提问者和网友采纳

以上是关于Matlab读取txt文件并找出开头相同的行并输出成另一个txt文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Bash 读取文件中的行并避免使用 # 行

matlab怎么找到一个矩阵中所有相同的两行并返回行号

matlab怎样通过for循环语句找出两矩阵相同的行和列?

很简单matlab的问题,怎样找出有相同的数值的行

如何在文本文件中查找行并导出行号

如何删除错误行错误的行并使用 pandas 或 numpy 读取剩余的 csv 文件?