MATLAB关于自定义函数的问题
我需要导入5个不同的文本(reffile,file1,file2,file3,file4,file5),自己编写的程序如下(将同一种方法重复5次):[FileName,P...
我需要导入5个不同的文本(reffile,file1,file2,file3,file4,file5),自己编写的程序如下(将同一种方法重复5次):
[FileName,PathName] = uigetfile('*.txt','Select the txt files');%弹出对话框,然后选择要处理的txt文件
delimiter = '\t';
formatSpec = '%s%s%s%s%s%s%s%s%[^\n\r]';
fileID = fopen([PathName FileName]);
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'ReturnOnError', false);% 根据格式字符串读入列.
fclose(fileID); % 关闭txt文件.
reffile = [dataArray{1:end-1}];
clearvars delimiter formatSpec fileID dataArray ans;% 清除临时变量
[FileName,PathName] = uigetfile('*.txt','Select the txt files');%弹出对话框,然后选择要处理的txt文件
delimiter = '\t';
formatSpec = '%s%s%s%s%s%s%s%s%[^\n\r]';
fileID = fopen([PathName FileName]);
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'ReturnOnError', false);% 根据格式字符串读入列.
fclose(fileID); % 关闭txt文件.
file1-5 = [dataArray{1:end-1}];
clearvars delimiter formatSpec fileID dataArray ans;% 清除临时变量
%%%%file1-5就是将导入的程序再重复四次%%%%
现在的问题是程序太过冗长,我想编写一个自定义函数,通过函数调用来导入文本。或者编写一个for循环来实现也可以,请问要怎么做到呢? 展开
[FileName,PathName] = uigetfile('*.txt','Select the txt files');%弹出对话框,然后选择要处理的txt文件
delimiter = '\t';
formatSpec = '%s%s%s%s%s%s%s%s%[^\n\r]';
fileID = fopen([PathName FileName]);
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'ReturnOnError', false);% 根据格式字符串读入列.
fclose(fileID); % 关闭txt文件.
reffile = [dataArray{1:end-1}];
clearvars delimiter formatSpec fileID dataArray ans;% 清除临时变量
[FileName,PathName] = uigetfile('*.txt','Select the txt files');%弹出对话框,然后选择要处理的txt文件
delimiter = '\t';
formatSpec = '%s%s%s%s%s%s%s%s%[^\n\r]';
fileID = fopen([PathName FileName]);
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'ReturnOnError', false);% 根据格式字符串读入列.
fclose(fileID); % 关闭txt文件.
file1-5 = [dataArray{1:end-1}];
clearvars delimiter formatSpec fileID dataArray ans;% 清除临时变量
%%%%file1-5就是将导入的程序再重复四次%%%%
现在的问题是程序太过冗长,我想编写一个自定义函数,通过函数调用来导入文本。或者编写一个for循环来实现也可以,请问要怎么做到呢? 展开
1个回答
展开全部
5个不同的文本(reffile,file1,file2,file3,file4,file5)
这个似乎是6个文本额。。。。
for i=1:5
name = ['file',num2str(i)];
dataArray(i) = importdata(name);
end
基本思想是这样。每个循环内读取filen文件
这个似乎是6个文本额。。。。
for i=1:5
name = ['file',num2str(i)];
dataArray(i) = importdata(name);
end
基本思想是这样。每个循环内读取filen文件
追问
oo,我这个文本是既含有数字又含有英文、括号等特殊字符,无法使用importdata导入。我的文本大概是这个样子的:
Stage 4 Position: 0.000
Date: 2013/8/27
Time: 13:02
Time[s] Amp[HZ]
0 4
1 5
file1-5名称与文本实际的名称不一样,这个不影响我的导入。
追答
如果自动导入的话,那么必须要求文件名有一定规律,否则没办法循环
for i=1:5
FileName = ['file',num2str(i)];
delimiter = '\t';
formatSpec = '%s%s%s%s%s%s%s%s%[^\n\r]';
fileID = fopen([FileName]);
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'ReturnOnError', false);% 根据格式字符串读入列.
fclose(fileID); % 关闭txt文件.
reffile = [dataArray{1:end-1}];
clearvars delimiter formatSpec fileID dataArray ans;% 清除临时变量
end
那么就是增加一个循环,内部结构不变。上面这个就是从同一路径下读取文件名按顺序排列的文件
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |