MATLAB: Non-rectangular text file upload

cell arraysfgetltext filetextscan

Hi,
I have a text file in the following form:
var1, val
var2, val
var3, val, val, val
var4, val, val
var6, val
so each line represent a variable that can be either a float or a vector of float. I would like to import this data in matlab where I would have a variable named var1 that would contain the values given in the text file, and so forth.
I have looked at various documentations but i cannot find something that work for my case: there should be a same number of column and I cannot figure out how to have that variable name in my matlab code.
Thanks for your help/suggestions! Leo

Best Answer

This will do it:
fid = fopen('data.csv');
tline = fgetl(fid);
while ischar(tline)
ind = find(tline==',',1,'first');
eval([tline(1:ind-1) '= [' tline(ind+1:end),']']);
tline = fgetl(fid);
end
fclose(fid)
If you don't want to see the output, you can replace the eval line by
S = evalc([tline(1:ind-1) '= [' tline(ind+1:end),']']);
EDIT: If you wish to follow Walter's advice and put all your variables in a structure, you could do the following:
fid = fopen('data.csv');
S = struct;
tline = fgetl(fid);
while ischar(tline)
ind = find(tline==',',1,'first');
S.(tline(1:ind-1)) = str2num(tline(ind+1:end));
tline = fgetl(fid);
end
fclose(fid);