need function to save my data
Mostrar comentarios más antiguos
hi,
I have data is formatted as
*cluster1 2 3
cluster2 1 4 5
cluster3 6 7 10 8*
I would like to find way to save it in file, I know textscan work with such format but this function need equal number of columns in each row.
is there any other way to do that?
thanks
4 comentarios
Walter Roberson
el 14 de Sept. de 2012
I am confused about whether the difficulty is with saving the data or with loading it? Which function is it that needs equal number of columns in each row?
huda nawaf
el 14 de Sept. de 2012
Walter Roberson
el 14 de Sept. de 2012
Try str2num(c2{1})
huda nawaf
el 14 de Sept. de 2012
Respuestas (4)
per isakson
el 14 de Sept. de 2012
Editada: per isakson
el 15 de Sept. de 2012
I assume that
- you want to import data from a text file, which is defined by the three rows embraced by "*"
- the "*" are traces of your effort to format the text
Since the rows have different formats textscan is not appropriate.
One way to read the file is to loop over the all rows and read one row at a time with the function
fgetl, Read line from file, removing newline characters
There is an example in the documentation
.
-- Working code [ R2012a, 2012-09-15 ] ---
>> S = cssm()
S =
1x3 struct array with fields:
Cluster
Items
>> [S.Cluster]
ans =
1 2 3
>> S(3).Items
ans =
6 7 10 8
where cssm.m is
function S = cssm()
fid = fopen('cssm.txt');
cup = onCleanup( @() fclose( fid ) );
S = struct([]);
str = fgetl( fid );
while ischar( str )
str = strtrim( str );
str = strrep( str, 'cluster', '' );
num = str2num( str );
S(end+1).Cluster = num(1); %#ok<AGROW>
S(end ).Items = num(2:end);
str = fgetl( fid );
end
end
and where cssm.txt contains the tree rows
cluster1 2 3
cluster2 1 4 5
cluster3 6 7 10 8
.
--- Alternate code ---
>> S = cssm()
S =
1x3 struct array with fields:
RowHeader
Items
>> {S.RowHeader}
ans =
'cluster1' 'cluster2' 'cluster3'
>> S(3).Items
ans =
6 7 10 8
where cssm.m is
function S = cssm()
fid = fopen('cssm.txt');
cup = onCleanup( @() fclose( fid ) );
S = struct([]);
str = fgetl( fid );
while ischar( str )
[ tok, str ] = strtok( strtrim( str ) );
S(end+1).RowHeader = tok; %#ok<AGROW>
S(end ).Items = str2num( str );
str = fgetl( fid );
end
end
1 comentario
per isakson
el 15 de Sept. de 2012
Working code added
Pritesh Shah
el 14 de Sept. de 2012
0 votos
Just find help save and load function.
If you want to save data....
Assuming that it is already available in work space.
Image Analyst
el 15 de Sept. de 2012
0 votos
And the problem with using save() is......??????? What????
Pritesh Shah
el 7 de Dic. de 2012
0 votos
Use save function to store variables.
Help save
Enjoy !!
Categorías
Más información sobre Data Type Conversion en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!