MATLAB: Matlab is returning error “Argument must contain a string.” when using “save”

cell arrayserrorMATLABsave

Hi,
I am trying to save some 3D variables in different named .mat files. I have created the filenames and variables in for loop. I am putting the files in cell (some cells wil be empty, I have some more for loops and if cnditions in between which I have not showed in the sample code) so that I can save them later. Matlab is giving me the error "Argument must contain a string.". I tried saving the files in the for loop previously but Matlab gave the same error.
I have tried running the code for a single year also, with the same error msg.
If the filenames are not variale then the save option is working fine, but I need to vary the filenames as they are representative of the year.
Please help me to save the variables.
path='somepath';
data=dir('somepath\*.TXT');
years={'2007';'2008';'2009';'2010';'2011';'2012';'2013';'2014';'2015';'2016'};
for i=1:size(data,1)
addpath(fullfile(path));
for j=1:size(years,1)
filenames=data(i).name;
filestring=cellstr(filenames);
xx=regexp(filestring,'\d','Match');
totreg=cellstr(xx{:});
pp=strcat(totreg(1),totreg(2),totreg(3),totreg(4));
year=str2double(pp);
if year == str2double(years(j));
filenames
'found the file'
if mod(str2double(years(j)), 4) == 0 && mod(str2double(years(j)), 100) ~= 0
'status = true2'
fileread2=dlmread(filenames,'',0,1);
Data_rain_leap2(:,:,:)=reshape(fileread2, [366,130,135]);
Data_rain_2{j}=Data_rain_leap2(:,2:end,:);
outputfilename2{j}=strcat('Data_',pp,'.mat');
addpath(fullfile(path));
%save(outputfilename2(j),'Data_rain_2'); it is also not working
else
'status = false'
fileread3=dlmread(filenames,'',0,1);
Data_rain_leap3(:,:,:)=reshape(fileread3, [365,130,135]);
Data_rain_3{j}=Data_rain_leap3(:,2:end,:);
outputfilename3{j}=strcat('IMD_grid_',pp,'.mat');
end
end
end
end
addpath(fullfile(path));
xx=find(~cellfun(@isempty,Data_rain_3));
Data_rain_3XX=Data_rain_3{xx};
save(outputfilename3{xx},'Data_rain_3XX');