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

5 Ansichten (letzte 30 Tage)
sono
sono am 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 Kommentare
José-Luis
José-Luis am 18 Sep. 2012
Is SANJOSE a .mat file?
sono
sono am 18 Sep. 2012
Bearbeitet: sono am 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.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

José-Luis
José-Luis am 18 Sep. 2012
Bearbeitet: José-Luis am 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 Kommentare
sono
sono am 18 Sep. 2012
Bearbeitet: sono am 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 am 18 Sep. 2012
Bearbeitet: José-Luis am 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);

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Convert Image Type finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by