matlab 如何判断不同文件中相同位置的数据的大小。
比如:我有十个数据文件,文件名依次为ratio-1.txt到ratio-10.txt,文件中数据格式相同,文件名有规律,我想依次判断这些文件中每一个对应位置的数据的大小关...
比如: 我有十个数据文件,文件名依次为ratio-1.txt到ratio-10.txt ,文件中数据格式相同,文件名有规律,我想依次判断这些文件中每一个对应位置的数据的大小关系,并把依次减小的这些数据或者数据的位置输出。具体如下:
ratio-1.txt ratio-2.txt ratio-3.txt ratio-4.txt
1594.00 0.007155 1594.00 0.007175 1594.00 0.007155 1594.00 0.007157
1594.08 0.033847 1594.08 0.033857 1594.08 0.033853 1594.08 0.033865
1594.16 0.031987 1594.16 0.032076 1594.16 0.032033 1594.16 0.032000
1594.24 0.143111 1594.24 0.143105 1594.24 0.143078 1594.24 0.143037
比如这四个文件,每个文件的第一列数值是相同的,这些文件实际都是376×2大小的矩阵。比如,ratio-1.txt中第4行,第二列的0.14311,大于 ratio-2.txt中第4行,第二列的0.143105, ratio-2.txt中第4行,第二列的0.143105又大于 ratio-3.txt中第4行,第二列的0.143078 ,然后ratio-3.txt中第4行,第二列的0.143078 ,又大于ratio-4.txt中第4行,第二列的0.143037 ,满足这样一个依次递减的关系,就输出数据的第四行第一列的数据1594.24以及这些文件中依次出现的第四行第二列的数据;否则不输出。将输出的数据写在一个chose.txt的文件中。
向高手请教,这在matlab中如何实现啊????谢谢啊 !!! 展开
ratio-1.txt ratio-2.txt ratio-3.txt ratio-4.txt
1594.00 0.007155 1594.00 0.007175 1594.00 0.007155 1594.00 0.007157
1594.08 0.033847 1594.08 0.033857 1594.08 0.033853 1594.08 0.033865
1594.16 0.031987 1594.16 0.032076 1594.16 0.032033 1594.16 0.032000
1594.24 0.143111 1594.24 0.143105 1594.24 0.143078 1594.24 0.143037
比如这四个文件,每个文件的第一列数值是相同的,这些文件实际都是376×2大小的矩阵。比如,ratio-1.txt中第4行,第二列的0.14311,大于 ratio-2.txt中第4行,第二列的0.143105, ratio-2.txt中第4行,第二列的0.143105又大于 ratio-3.txt中第4行,第二列的0.143078 ,然后ratio-3.txt中第4行,第二列的0.143078 ,又大于ratio-4.txt中第4行,第二列的0.143037 ,满足这样一个依次递减的关系,就输出数据的第四行第一列的数据1594.24以及这些文件中依次出现的第四行第二列的数据;否则不输出。将输出的数据写在一个chose.txt的文件中。
向高手请教,这在matlab中如何实现啊????谢谢啊 !!! 展开
1个回答
展开全部
clear all; clc;
ct = 10; % 文件数量
fun = @(x) ['ratio-' num2str(x) '.txt'];
fnm = arrayfun(fun,1:ct,'un',false); % 生成所有的文件名
format long;
data = [];
for k = 1:ct
dt = textread(fnm{k});
data(:,k) = dt(:,2);
end;
rd = data';
L = diff(rd)>0;
RT = [];
for k = 1:ct
if any(L(:,k)) == 0
a = dt(k,1);
b = data(k,:);
RT = [RT;[a b]];
end;
end;
wfn = 'chose.txt';
save(wfn,'RT','-ascii');
disp(['选出的数据已写入文件:' wfn]);
ct = 10; % 文件数量
fun = @(x) ['ratio-' num2str(x) '.txt'];
fnm = arrayfun(fun,1:ct,'un',false); % 生成所有的文件名
format long;
data = [];
for k = 1:ct
dt = textread(fnm{k});
data(:,k) = dt(:,2);
end;
rd = data';
L = diff(rd)>0;
RT = [];
for k = 1:ct
if any(L(:,k)) == 0
a = dt(k,1);
b = data(k,:);
RT = [RT;[a b]];
end;
end;
wfn = 'chose.txt';
save(wfn,'RT','-ascii');
disp(['选出的数据已写入文件:' wfn]);
追问
谢谢你啊!!!但是在运行第一个for循环的时候,为什么出现
Error using textread (line 167)
File not found.
这是什么意思啊?
追答
% 可能是文件名的问题,仔细检查下,文件名中是否包含空格、全角字符等。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询