MATLAB: Saving nonempty columns of cell as separate variables with specific names in matfile

cellMATLABsave

I would like to save all non-empty columns of the cell below, in a matfile using the function save.
% Example of how a cell could look
allad = cell(1,80)
allad{1,8} = rand(10000,1);
allad{1,25} = rand(5000,1);
The requirement is that every variable is saved in the file with the variable name yN, where N is the number of the column. For example the matfile could in this case be created with
y8 = allad{1,8};
y25 = allad{1,25};
save('testing.mat', 'y8', 'y25', '-v7.3') % must be v7.3 since real dataset is huge
Or it could be done with
save('testing.mat', 'y8', '-v7.3')
save('testing.mat', 'y25', '-append', '-v7.3')
The problem is that each time I run this script, the cell "allad" will have different columns that are empty, and different sizes of all columns that are nonempty. At first I wanted to loop through the cell and dynamically create variable-names if the current column (in the loop) was nonempty, however this seems to be taboo after reading around in this forum, so I'm wondering if you have any idea of how else to solve this.
EDIT:
The reason I need to save them with these specific names, is that I'm using a certain project in matlab which requires it. Making changes in the project itself would take very long time, however making sure my datafile is set up in the way that the project requires is much less time consuming.

Best Answer

Fake data:
>> allad = cell(1,80);
>> allad{8} = rand(10000,1);
>> allad{25} = rand(5000,1);
You can use cell2struct and save's -struct option:
>> idx = find(~cellfun(@isempty,allad));
>> fld = arrayfun(@(n)sprintf('y%u',n),idx,'UniformOutput',false); % or use COMPOSE or SPRINTFC.
>> tmp = cell2struct(allad(idx),fld,2);
>> save('testing.mat','-struct','tmp','-V7.3')
And checking:
>> who -file testing.mat
Your variables are:
y25 y8
Note that forcing a pseudo-index into variable/fieldnames just makes accessing your data slower and more complex. I strongly recommend storing the indices as numeric data in their own right, e.g.:
>> idx = find(~cellfun(@isempty,allad));
>> dat = allad(idx);
>> save('testing.mat','idx','dat')
Note the simpler code. Accessing the data is also much simpler using basic, highly efficient indexing.