「非セル配列オブジェクトからセル要素を参照しています。」 は例えば cell2mat にセル配列以外のものを入力したときに発生するエラーですが、表示されているセル配列 data2 に対して
cell2mat(data2)
の実行で発生するものでしょうか。
20x1のベクトルを各セル内に持つ 1x3 のセル配列に対して cell2mat 関数が機能します。
A = {rand(20,1),rand(20,1),rand(20,1)};
AA = cell2mat(A);
ご質問内容を正しく理解していれば、同じ状況かと考えているんですが、お手元のデータとの相違点がありますでしょうか?