As it was mentioned in comments to your previous question by @JohnHascall, @MatthiasW and @AndrasDeak, x = who would return you the list of variables in the form of cell array. There can be many different ways to record the values of those variables. I suggest to take advantage from the fact that the elements of x are strings, so we can access the values of the variables by using eval inside a loop:
x = who;
for ii = 1:numel(x)
y{ii} = eval(x{ii});
end
The statement inside a loop would create another cell array and would record the values of corresponding variables. So, you would end up with something like this:
x =
'a'
'b'
'c'
'd'
'e'
y =
[5] 'Hello' [1x100 double] [14x14 double] [512x512x3 uint8]
So, suppose, you now wish to access b(3). You would do it like this:
y{2}(3)
ans =
l
Weird, but works anyway.