I have a .vff file wich I open :
fid = fopen('test.vff');
The header is as follows:
ncaa;
rank=3;
type=raster;
format=slice;
bits=32;
bands=1;
size=256 256 256;
I want to extract size as a variable. So far I've tried:
size = fgetl(fid)
7 times in a row to get to the correct line, but the output I get is a char variable:
size =
'size=256 256 256;'
Instead of an array.
Thanks
CG

1 commentaire

Stephen23
Stephen23 le 31 Juil 2019
Modifié(e) : Stephen23 le 31 Juil 2019
Do NOT use size as a variable name, as doing so shadows the very important size function!
Shadowing inbuilt functions is a common cause of bugs.

Connectez-vous pour commenter.

 Réponse acceptée

Adam Danz
Adam Danz le 30 Juil 2019
Modifié(e) : Adam Danz le 31 Juil 2019
Once you have that string, convert it to a vector like this.
s = 'size=256 256 256;';
s(~isstrprop(s,'digit')) = ' ';
d = str2num(s)
% result
% d =
% 256 256 256
Option 2 (update after Stephen's good point below).
s = 'size=256 256 256;';
d = str2double(regexp(s,'\d+','match'))
Note that this will work even if the number of dimensions in 'size' changes (size = 256 256).

2 commentaires

Charles Gauthier
Charles Gauthier le 30 Juil 2019
It worked! Thanks
Stephen23
Stephen23 le 31 Juil 2019
Modifié(e) : Stephen23 le 31 Juil 2019
Note that str2num relies on eval.

Connectez-vous pour commenter.

Plus de réponses (1)

Stephen23
Stephen23 le 31 Juil 2019
Modifié(e) : Stephen23 le 31 Juil 2019
A very simple and very efficient method without eval and without shadowing the inbuilt size:
>> str = 'size=256 256 256;';
>> vec = sscanf(str,'size=%f%f%f')
vec =
256
256
256

Catégories

En savoir plus sur Data Import and Analysis dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by