matlab 筛选数据 筛选一个矩阵

文件是EMAG2.txt ,里面是x,y,z的三列数据。要求:提取所有-85≤x≤-30;-60≤y≤15;的数据,并且输出到新的txt文件中。
或者帮我改一下
clc;
clear;
fin=fopen('EMAG2.txt','r');
fout=fopen('EMAG2.dat','w');
while(~feof(fin))
x=fscanf(fin,'%g',1);
y=fscanf(fin,'%g',1);
z=fscanf(fin,'%g',1);

while (x>=-85&&x<=-30)
while (y>=-65&&y<=15)
fprintf(fout,'%g %g %g\n',x,y,z);
end
end

end

第1个回答  2013-03-24

我假设你输入的那个文件时用逗号隔开三列的,那么只需要下边几句话就能完成你的工作了。


data=dlmread('EMAG2.txt');

ind=data(:,1)>=-85 & data(:,1)<=-30 & data(:,2)>=-60 & data(:,1)<=15;

dlmwrite('EMAG2.dat',data(ind,:),' ')


为了测试我自己写了一个txt,右侧的dat是运行程序后的结果。

追问

你是用的什么软件?matlab?还是C?

追答

matlab啊

给你看的这个是一个编辑器,跟matlab无关,只是为了让你看看哪结果。

追问

我试了,没有效果

追答

你文件放进文件夹中了吗?你那个文件把那个txt文件截个图发出来?你单步执行看看,第二步结束后data对不对。我这三步程序保证没有问题。

本回答被提问者采纳