fscanfを用いた​行列ファイルデータの​読み取りについて

14 visualizaciones (últimos 30 días)
Yusaku Ando
Yusaku Ando el 6 de Oct. de 2017
Editada: Jiro Doke el 10 de Oct. de 2017
行列の配列が異なる複数のtxtファイルを下のようにリストにまとめ、ループ中でfscanfによって行列を読み取ると、x行y列のデータがx×y行1列で表示されてしまいます。x=fscanf(infile,'%f'、[x y]);とすれば表示できると思いますが他のデータと配列が異なるので自動的に元の配列で表示させたいです。どのように訂正すれ可能になるでしょうか。
LIST=dir('*.txt');
file=fopen('fname.txt','wt');
n=length(LIST);
  for i=1:n
  out=LIST(i,1).name;
fprintf(file,'%s\n',out);
end
fclose(file);
fid=fopen('fname.txt');
data=textscan(fid,'%s');
infnames=data{1,1};
n=length(infnames);
for i=1:n
fname=infnames(i,1);
fname=char(fname);
[pathstr, name, ext] = fileparts(fname);
infile=fopen(fname);
s=fscanf(infile,'%f');
%省略
end
  

Respuesta aceptada

Jiro Doke
Jiro Doke el 10 de Oct. de 2017
Editada: Jiro Doke el 10 de Oct. de 2017
データ(数値)だけの区切りファイルなのでしたら fopen fscanf を使わずに dlmread などで読み込めます。例えば、このようなテキスト ファイルがあるとします。
1 2 3 4
5 6 7 8
fopen の代わりに
>> s = dlmread('data.txt')
s =
1 2 3 4
5 6 7 8

Más respuestas (0)

Productos

Community Treasure Hunt

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

Start Hunting!