Manipulate[​​coef[u_]:=Piecewise[{{1/Sqrt[8],u0},{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",BarSpacing0,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",BarSpacing0,AxesOrigin{0,0},TicksNone,PlotRange{-5,5},ImageSize400],​​Null,Null,​​BarChart[approxvec,ChartElementFunction"GlassRectangle",BarSpacing0,AxesOrigin{0,0},TicksNone,PlotRange{-5,5},ImageSize400]​​}]​​}​​],​​​​{{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}],​​ControlPlacementLeft​​​​]​​