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

5 vues (au cours des 30 derniers jours)
sono
sono le 18 Sep 2012
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 commentaires
José-Luis
José-Luis le 18 Sep 2012
Is SANJOSE a .mat file?
sono
sono le 18 Sep 2012
Modifié(e) : sono le 18 Sep 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.

Connectez-vous pour commenter.

Réponse acceptée

José-Luis
José-Luis le 18 Sep 2012
Modifié(e) : José-Luis le 18 Sep 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 commentaires
sono
sono le 18 Sep 2012
Modifié(e) : sono le 18 Sep 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 le 18 Sep 2012
Modifié(e) : José-Luis le 18 Sep 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);

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Convert Image Type dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by