MATLAB: Naming VariableNames in a table based on a cell array

horzcattablevariablenames

I have an array data2 which is 1×576 and I have a cell array called data2_txt which is also 1×576. I have giving a small example below (the arrays im using are much larger)
data2=[1,5,3,5,6;1,2,4,12,6];
data2_txt={'Var1','Var2','Var3','Var4','Var5'}
Why do I get the error
Error using setVarNames (line 37)
The VariableNames property must contain one name for each variable in the table.
Error in table (line 305)
t = setVarNames(t,vnames); % error if invalid, duplicate, or empty"
When I use the following syntax
Table1=table(data2,'VariableNames',data2_txt);
I am able to get this to work if I use a loop. But given previous criticism of using loops vs vectorization in MatLab I am trying to avoid doing so to keep the code quick. Below is the code I can get working using a loop which is not very efficient
table3=table();
for i=1:length(data2)
table2a=table(data2(:,i),'VariableNames',data2_txt(i))
table3=horzcat(table3,table2a)
end
Any advice or direction would be greatly appreciated.

Best Answer

data2=[1,5,3,5,6;1,2,4,12,6]
data2_txt={'Var1','Var2','Var3','Var4','Var5'}
Table1=cell2table(num2cell(data2),'VariableNames',data2_txt)
%Or
data2=[1,5,3,5,6;1,2,4,12,6]
data2_txt={'Var1','Var2','Var3','Var4','Var5'}
v=mat2cell(data2,size(data2,1),ones(1,size(data2,2)))
Table1=table(v{:},'VariableNames',data2_txt)