How to import a spesific variable from a matrix in a file?

5 visualizaciones (últimos 30 días)
I have a file "SANJOSE" that has two values in it "20 30"
I would like to use "loc1lat = importdata('SANJOSE')" command to import the first value of the 1x2 matrix, not the whole thing.
I am not sure what syntax to use after ('SANJOSE', ???) to specify which variable in the matrix I want.
Thanks
  2 comentarios
José-Luis
José-Luis el 18 de Sept. de 2012
Is SANJOSE a .mat file?
sono
sono el 18 de Sept. de 2012
Editada: sono el 18 de Sept. de 2012
No it doesn't have an extension. I use the following script to create the file:
loc1N = input('Enter location 1 NAME: \n','s');
fid = fopen(loc1N,'a');
fprintf(fid, '%f %f\n', loc1lat, loc1long);
fclose(fid);
-----------------
I am trying to use this code to import the data but by calling out the variable that is = to the file name but cant figure out how to get it to work.
%request location names
loc1N = input('Enter NAME of starting location: \n','s');
%import data from database
loc1info = importdata('loc1N');
. . .
importdata('SANJOSE'); works but importdata('loc1N'); when loc1N = SANJOSE does not work for some reason :(
Also would be nice to prompt the user for name and import the data in one step but not critical.

Iniciar sesión para comentar.

Respuesta aceptada

José-Luis
José-Luis el 18 de Sept. de 2012
Editada: José-Luis el 18 de Sept. de 2012
filename = 'SANJOSE';
(SANJOSE is a text file containing one line: 20 30)
Two options, either pass the file name SANJOSE as a string:
fid = fopen('SANJOSE','r'); %'r' means you only want to read the data.
your_value = fscanf(fid,'%d',1); %Will only read the first value
fclose(fid);
Or, pass the variable name (filename) that contains a string:
fid = fopen(filename,'r');
your_alternative_value = fscanf(fid,'%d',1);
fclose(fid);
  4 comentarios
sono
sono el 18 de Sept. de 2012
Editada: sono el 18 de Sept. de 2012
The skip variable trick didn't seem to work. Ends up outputting an empty matrix.
loc1long =
[]
yeah I am trying to read up right now but can't seem to find a solid answer for pulling specific variables out of a sequence =/
thanks though :)
José-Luis
José-Luis el 18 de Sept. de 2012
Editada: José-Luis el 18 de Sept. de 2012
My bad, I had not tested the code I posted above: it would work only if you want to skip one value. Instead you could move in your file character by character until you find a space and then read the next variable.
filename = 'SANJOSE';
fid = fopen('SANJOSE','r');
valsToSkip = 2; %1 if you want the second value, 2 if your want the third, etc...
while (valsToSkip)
currentChar = fscanf(fid,'%c',1);
if currentChar == ' ';
valsToSkip = valsToSkip - 1;
end
end
your_second_value = fscanf(fid,'%d',1);
fclose(fid);
fid = fopen(filename,'r');
your_first_value = fscanf(fid,'%d',1);
fclose(fid);

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Convert Image Type en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by