assign header line value to variable

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 Comment

Stephen23
Stephen23 on 31 Jul 2019
Edited: Stephen23 on 31 Jul 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.

Sign in to comment.

 Accepted Answer

Adam Danz
Adam Danz on 30 Jul 2019
Edited: Adam Danz on 31 Jul 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 Comments

It worked! Thanks
Stephen23
Stephen23 on 31 Jul 2019
Edited: Stephen23 on 31 Jul 2019
Note that str2num relies on eval.

Sign in to comment.

More Answers (1)

Stephen23
Stephen23 on 31 Jul 2019
Edited: Stephen23 on 31 Jul 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

Categories

Find more on Data Import and Analysis in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!