Manipulate[coef[u_]:=Piecewise[{{1/Sqrt[8],u0},{1/2,u≠0}}];signal[u_,i_]:=coef[u]*N[Cos[(2i+1)*u*Pi/16]];(*uchangesthebasesvector,whileicreatesthecomponentsofagivenbasisvector*)vector=Table[signal[u,i],{u,0,7},{i,0,7}];goalvec={a1,a2,a3,a4,a5,a6,a7,a8};c1=goalvec.vector[[1]];c2=goalvec.vector[[2]];c3=goalvec.vector[[3]];c4=goalvec.vector[[4]];c5=goalvec.vector[[5]];c6=goalvec.vector[[6]];c7=goalvec.vector[[7]];c8=goalvec.vector[[8]];approxvec=v1*c1*vector[[1]]+v2*c2*vector[[2]]+v3*c3*vector[[3]]+v4*c4*vector[[4]]+v5*c5*vector[[5]]+v6*c6*vector[[6]]+v7*c7*vector[[7]]+v8*c8*vector[[8]];plot[x_]:=BarChart[vector[[x]],ChartElementFunction"GlassRectangle",BarSpacing0,AxesOrigin{0,0},Ticks{None,{-1,1}},PlotRange{-1,1}];Column[{GridBox[{{plot[1],plot[2],plot[3],plot[4]},{plot[5],plot[6],plot[7],plot[8]}},GridBoxDividers{"Rows"{{True}},"Columns"{{True}}}]//DisplayForm,Null,Null,Row[{BarChart[{a1,a2,a3,a4,a5,a6,a7,a8},ChartElementFunction"GlassRectangle",BarSpacing0,AxesOrigin{0,0},TicksNone,PlotRange{-5,5},ImageSize400],Null,Null,BarChart[approxvec,ChartElementFunction"GlassRectangle",BarSpacing0,AxesOrigin{0,0},TicksNone,PlotRange{-5,5},ImageSize400]}]}],{{a1,3},-5,5},{{a2,1},-5,5},{{a3,4},-5,5},{{a4,1},-5,5},{{a5,5},-5,5},{{a6,-4},-5,5},{{a7,2},-5,5},{{a8,-1},-5,5},Row[{Control[{{v1,0},{0"off",1"on"},ControlType->SetterBar}],Null,c1}],Row[{Control[{{v2,0},{0"off",1"on"},ControlType->SetterBar}],Null,c2}],Row[{Control[{{v3,0},{0"off",1"on"},ControlType->SetterBar}],Null,c3}],Row[{Control[{{v4,0},{0"off",1"on"},ControlType->SetterBar}],Null,c4}],Row[{Control[{{v5,0},{0"off",1"on"},ControlType->SetterBar}],Null,c5}],Row[{Control[{{v6,0},{0"off",1"on"},ControlType->SetterBar}],Null,c6}],Row[{Control[{{v7,0},{0"off",1"on"},ControlType->SetterBar}],Null,c7}],Row[{Control[{{v8,0},{0"off",1"on"},ControlType->SetterBar}],Null,c8}],ControlPlacementLeft]