matlab txt数据合并

每个txt文件里面有两列,第一列是波长,第二列是数据,然后只要每个txt里面的第二列数据,然后把所有的数据按文件排列顺序并列合成一个txt文件。希望大神指导一下代码

第1个回答  2018-05-10
1、先在matlab搜索路径存在的文件平中新建一个importfile.m文件,内容如下:
function data = importfile(filename, startRow, endRow)
%IMPORTFILE 将文本文件中的数值数据作为列矢量导入。
% DATA = IMPORTFILE(FILENAME) 读取文本文件 FILENAME 中默认选定范围的数据。
%
% DATA = IMPORTFILE(FILENAME, STARTROW, ENDROW) 读取文本文件 FILENAME 的
% STARTROW 行到 ENDROW 行中的数据。
%
% Example:
% data = importfile('001.txt',1, 7);
%
% 另请参阅 TEXTSCAN。
% 由 MATLAB 自动生成于 2018/05/10 10:56:12

%% 初始化变量。

delimiter = ' ';
if nargin<=2
startRow = 1;
endRow = inf;
end
%% 每个文本行的格式字符串:

% 列2: 双精度值 (%f)
% 有关详细信息,请参阅 TEXTSCAN 文档。
formatSpec = '%*s%f%[^\n\r]';
%% 打开文本文件。

fileID = fopen(filename,'r');
%% 根据格式字符串读取数据列。

% 该调用基于生成此代码所用的文件的结构。如果其他文件出现错误,请尝试通过导入工具重新生成代码。
dataArray = textscan(fileID, formatSpec, endRow(1)-startRow(1)+1, 'Delimiter', delimiter, 'MultipleDelimsAsOne', true, 'HeaderLines', startRow(1)-1, 'ReturnOnError', false);
for block=2:length(startRow)
frewind(fileID);
dataArrayBlock = textscan(fileID, formatSpec, endRow(block)-startRow(block)+1, 'Delimiter', delimiter, 'MultipleDelimsAsOne', true, 'HeaderLines', startRow(block)-1, 'ReturnOnError', false);
dataArray{1} = [dataArray{1};dataArrayBlock{1}];
end
%% 关闭文本文件。

fclose(fileID);
%% 对无法导入的数据进行的后处理。

% 在导入过程中未应用无法导入的数据的规则,因此不包括后处理代码。要生成适用于无法导入的数据的代码,请在文件中选择无法导入的元胞,然后重新生成脚本。
%% 将导入的数组分配给列变量名称
data = dataArray{:, 1};
2、在命令行输入下列命令:
path='C:\Users\Administrator\Desktop\';%文件路径
data=importfile(strcat(path,'00000.txt'));%获取00000.txt中数据
n=1000; %有多少文件n就等于几,比如最大文件编号是01000.txt,则n=1000
for i=1:1:n
filename=strcat(path, num2str(i,'%05d') ,'.txt');
tmp=importfile(filename);
data=[data;tmp];
end
3、将得到的data数据打开,复制到excel表格中,取好有效位数,然后再复制到txt中就可以了本回答被网友采纳
相似回答