首页新闻找找看学习计划

matlab 如何读取多个txt文件作为main.m的输入文件,并依次执行脚本文件?

0
悬赏园豆:10 [已解决问题] 解决于 2018-01-12 16:01

一个main.m文件,其输入数据为in0001.txt这样的文件,in0001.txt~in0020.txt。现在每次都是执行一次程序得到一个结果,再手动更改注入文件名,再执行程序得到结果。手动操作比较麻烦,请问如何让它能够依次进行,不需要一次次手动更改文件名来执行?读入数据代码如下,谢谢Thanks♪(・ω・)ノ

clear all
close all
clc
tic%统计运行时间
%--------------------------------开始注入初始数据---------------------------------------
input_data = importdata('in0001.txt');%注入的测试数据
input_data_shift = input_data';


好像可以使用execl存文件名来解决的,但是我没有尝试成功。
for k = 1:20
    input_data{k} = importdata(b{k});%注入的测试数据
end
input_data_shift{k} = input_data{k}';

新手一枚,请前辈帮助,Thanks♪(・ω・)ノ

GALI17的主页 GALI17 | 初学一级 | 园豆:96
提问于:2018-01-12 11:31
< >
分享
最佳答案
0
for i= 1:2
    fileName = "DATA/data"+i+".txt";
    input_data(:,i) = importdata(fileName);
end
input_data

这样吗?我的data1

1
2
3
4
5
6
7

data2

1
1
1
1
1
1
1

结果为

input_data =

     1     1
     2     1
     3     1
     4     1
     5     1
     6     1
     7     1
收获园豆:10
BUTTERAPPLE | 老鸟四级 |园豆:2948 | 2018-01-12 11:52

这样更简便:

for i= 1:2
    fileName = sprintf("DATA/data%d.txt",i);
    input_data(:,i) = importdata(fileName);
end
input_data
BUTTERAPPLE | 园豆:2948 (老鸟四级) | 2018-01-12 11:56

@BUTTERAPPLE: 嗯呐,我后来试了一个方法,好像和您的一样的,也成功了:

for k = 1:3;
if k < 9
filename = strcat(['in000' num2str(k) '.txt']);
end
input_data = importdata(filename)%注入的测试数据

end

Thanks♪(・ω・)ノ

不过请问你知道如何把每次得到的结果也依次输出到不同的txt文件么?

GALI17 | 园豆:96 (初学一级) | 2018-01-12 15:13

@咖喱free:

for i= 1:2
    fileName = sprintf("DATA/data%d.txt",i);
    input_data(:,i) = importdata(fileName);
end
input_data
fileID = fopen('DATA/exp.txt','w');
fprintf(fileID,'%d %d\n',input_data);
fclose(fileID);
type exp.txt

存取文件用到了这个 fprintf 你可以去详细看看,上面我只给你了一个解法。

BUTTERAPPLE | 园豆:2948 (老鸟四级) | 2018-01-12 15:27

@BUTTERAPPLE: 好的,谢谢~

GALI17 | 园豆:96 (初学一级) | 2018-01-12 16:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册