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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了很简单matlab的问题,怎样找出有相同的数值的行相关的知识,希望对你有一定的参考价值。

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

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的问题,怎样找出有相同的数值的行的主要内容,如果未能解决你的问题,请参考以下文章

matlab矩阵里有很多有相同值的元素,如何剔除多余的,每个值只留一个元素

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

matlab中怎样计算一个矩阵中每个数的平方?

matlab中怎样计算一个矩阵中每个数的平方

如何在二维数组的每个单元格中找到具有相同数值的行?

matlab矩阵中如何去掉重复的行和找到相同的行