fopen with string vector

8 次查看(过去 30 天)
Amanda Kessler
Amanda Kessler 2019-8-26
评论: Jon 2019-8-27
clear all
clc
cd('C:\Users\akess\Box Sync\PhD\PCCS\PCCS 190822\HRP with salt 190822\Textfiler')
S = dir('*.txt');
N = {S.name};
for j=1:length(N)
x = ones(2,length(N));
Name=N(j);
fid = fopen(Name); %THIS DOESNT WORK, DO YOU KNOW HOW TO FIX IT?
data = textscan(fid,'%s%s%s');
A=data{1, 2}{132, 1};%mean count rate ch.1
B=data{1, 2}{134, 1};%mean count rate ch.2
A1=str2num(A);
B1=str2num(B);
x(1,j) = A1;
x(2,j) = B1;
end
I have several files I want to read and only take out certain values. I would like the loop to open one file at a time but fopen does not seem to work with taking out one string from N. Can anyone help me?
  2 个评论
JESUS DAVID ARIZA ROYETH
try it :
clear all
clc
cd('C:\Users\akess\Box Sync\PhD\PCCS\PCCS 190822\HRP with salt 190822\Textfiler')
S = dir('*.txt');
N = {S.name};
for j=1:length(N)
x = ones(2,length(N));
Name=N{j};
fid = fopen(Name); %THIS DOESNT WORK, DO YOU KNOW HOW TO FIX IT?
data = textscan(fid,'%s%s%s');
A=data{1, 2}{132, 1};%mean count rate ch.1
B=data{1, 2}{134, 1};%mean count rate ch.2
A1=str2num(A);
B1=str2num(B);
x(1,j) = A1;
x(2,j) = B1;
close(fid)
end
Amanda Kessler
Amanda Kessler 2019-8-27
Thank you! works perfectly

请先登录,再进行评论。

采纳的回答

Jon
Jon 2019-8-26
编辑:Jon 2019-8-26
Your first problem is that dir returns a structure. If you want the name of, the ith file it returns you should use
Name = S(j).name
You could also do it your way, making a cell array of file names, but I don't see any advantage to that. If you do it that way however you must use curly braces to retrieve the individual name for example
Name = N{j}

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by