Borrar filtros
Borrar filtros

How to parse variables independent of order

1 visualización (últimos 30 días)
g
g el 16 de Nov. de 2018
Editada: Stephen23 el 16 de Nov. de 2018
I am currently opening a file and parsing arguments in the following way:
ReadParam = 'h0 = %f f0 = %f';
fid = fopen(file);
params = textscan(fid, readParam, 'Delimiter', '\n');
fclose(fid);
h0 = params{1};
f0 = params{2};
disp(h0);
disp(f0);
However, this method assumes a specific order to h0 and f0, by the way readParam and params are defined. How would I parse the argument in such a way that order doesn't matter? This is because in "file", they can be switched (and there are more variables, this is just an example). Thanks!
  6 comentarios
g
g el 16 de Nov. de 2018
One parameter per line, no parameter name repeats.
as for delimiters, I’m not sure what that means, but the current scheme is what I have above.
thanks!
g
g el 16 de Nov. de 2018
Assumimg my data is of this form:
a = 2
b = 3
How would I create a structure/parse this?

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 16 de Nov. de 2018
Editada: Stephen23 el 16 de Nov. de 2018
It would help most if you uploaded a sample file, so we have something to work with. But here is a simple working example of how to read a file matching your description (you did not upload a sample data file, so I had to create my own test file (attached)) and convert its contents into a structure. Then the order of the contents is irrelevant:
fmt = '%s%f';
opt = {'Delimiter','='};
[fid,msg] = fopen('temp2.txt','rt');
assert(fid>=3,msg)
C = textscan(fid,fmt,opt{:});
fclose(fid);
D = [strtrim(C{1}),num2cell(C{2})].';
S = struct(D{:});
Giving:
>> S.h0
ans = 1.2300
>> S.f0
ans = 4.5600
>> S.z
ans = 6.7890

Más respuestas (0)

Categorías

Más información sobre Data Type Conversion en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by