Using for loop to enter data with similar names

1 回表示 (過去 30 日間)
jfrazie9
jfrazie9 2018 年 3 月 26 日
回答済み: Jan 2018 年 3 月 28 日
I am trying to import data from 250 *.txt files. The file names are as such "C58501_line_ssf_001" to "C58501_line_ssf_250".
numfiles = 250;
filenames = 'C58501_line_ssf_%.txt'
results = cell(numfiles, 1);
for K = 1 : numfiles
modpath = filenames{K};
datastruct = load(modpath);
end
these files have multiple data rows for 55 individual paths. I want to import these *.txt files, extract the data from paths 16-20 and then get the individual values from 3 seperate columns. I am very uncertain on how to import all the data files and eliminate data down to the rows and columns I need.
Thank you in advance!
  7 件のコメント
jfrazie9
jfrazie9 2018 年 3 月 27 日

I began there from other questions asked and got something that created 1 7909x34 double when I need 250 7909x10 doubles using the following code

for k = 1:250

    textFilename = sprintf('C58501_line_ssF_%04d.txt',k);
    M = dlmread(textFilename,' ',1,0);
end

I would like to get these files in as 250 files as 7909x10 doubles and reduce them all to 7909x4 where the data form columns 1,2,3 and 6 are pulled out. After that I need to reduce it further so that all the values in column 1 with values of 16,17,18,19 and 20 are pulled out this should result in approximately a 500x4 double. I know what I am after I just have not been able to get an answer from looking at matlab tutorials and questions asked previously.

Any help is again greatly appreciated.

Bob Thompson
Bob Thompson 2018 年 3 月 27 日
See comments on your other question.
For gathering multiple files you can also look at using the uigetfile() command. It only allows you to select from one directory at a time, but you are able to pick multiple files which it will index in a cell array of strings.
If the files are not able to be moved to a single directory then changing the string using sprintf and a for loop like you have is probably your best bet.

サインインしてコメントする。

回答 (1 件)

Jan
Jan 2018 年 3 月 28 日
C = cell(1, 250);
for k = 1:250
Filename = sprintf('C58501_line_ssF_%04d.txt',k);
M = dlmread(Filename,' ',1,0);
C{k} = M(ismember(M(:,1), 16:20), [1,2,3,6]);
end
Result = cat(1, C{:});

カテゴリ

Help Center および File ExchangeWorkspace Variables and MAT-Files についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by