Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Manipulate variables not getting evaluated

  • To: mathgroup at smc.vnet.net
  • Subject: [mg122849] Re: Manipulate variables not getting evaluated
  • From: Armand Tamzarian <mike.honeychurch at gmail.com>
  • Date: Sat, 12 Nov 2011 07:34:56 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <j9is1j$8h6$1@smc.vnet.net>

On Nov 11, 9:05 pm, Ken Levasseur <klevass... at mac.com> wrote:
> Hello
>
> I'm trying to control, using Manipulate, which rows of a matrix are
> displayed.  But have run into a problem.   The code I annotate here is
> copied without comments below.   For this example, I'll use this 2 by 3
> matrix
>
> A = {{1, 2, 3}, {4, 5, 6}};
>
> The following works pretty much as I intend, although there is fixable
> problem if all boxes are unchecked.
>
> Manipulate[
>  Transpose[Transpose[A][[Select[Range[3], {a, b, c}[[#1]] & ]]]],
>  Evaluate[Sequence @@ {{a, {True, False}}, {b, {True,
>       False}}, {c, {True, False}}}]]
>
> Now I want to do the same for larger matrices with various numbers of
> columns so I've tried generalizing as follows:
>
> Number of columns:
>
> M = 3;
>
> This generates a list of M symbols:   col1, col2,=85
>
> switchlist = (ToExpression[StringJoin["col", ToString[#1]]] & ) /@
>    Range[M];
>
> This generates a list of controllers for each symbol=85
>
> switches = ({ToExpression[StringJoin["col", ToString[#1]]], {True,
>        False}} & ) /@ Range[M];
>
> Now I expected this to work, but it fails:
>
> Manipulate[
>  Transpose[Transpose[A][[Select[Range[M], switchlist[[#1]] & ]]]],
>  Evaluate[Sequence @@ switches]]
>
> The problem is that the symbols in switchlist don't get evaluated.
>
> Manipulate[switchlist, Evaluate[Sequence @@ switches]]
>
>  I've tried using controllers like {{col1,True},{True,False}} and that doesn't make a difference.    Any idea why this fails?
>
> Ken Levasseur
> UMass Lowell
>
> ******************
> Code only:
>
> A = {{1, 2, 3}, {4, 5, 6}};
>
> Manipulate[
>  Transpose[Transpose[A][[Select[Range[3], {a, b, c}[[#1]] & ]]]],
>  Evaluate[Sequence @@ {{a, {True, False}}, {b, {True,
>       False}}, {c, {True, False}}}]]
>
> M = 3;
>
> switchlist = (ToExpression[StringJoin["col", ToString[#1]]] & ) /@
>    Range[M];
>
> switches = ({ToExpression[StringJoin["col", ToString[#1]]], {True,
>        False}} & ) /@ Range[M];
>
> Manipulate[
>  Transpose[Transpose[A][[Select[Range[M], switchlist[[#1]] & ]]]],
>  Evaluate[Sequence @@ switches]]
>
> Manipulate[switchlist, Evaluate[Sequence @@ switches]]

the final example in Manipulate > Neat Examples is probably the sort
of thing you are looking for:

Manipulate[
 ArrayPlot[
  Take[data, h, w]], {{data, RandomInteger[{0, 1}, {10, 20}]},
  ControlType -> None}, {{h, 5}, 1, 10, 1}, {{w, 5}, 1, 20, 1},
 Dynamic[Panel[
   Grid[Outer[Checkbox[Dynamic[data[[#1, #2]]], {0, 1}] &, Range[h],
     Range[w]]]]]]

Mike



  • Prev by Date: Re: large integration result for simple problem: 1/x,, also BesselJ
  • Next by Date: Re: nVidia Optumus prevents using CUDA?
  • Previous by thread: Manipulate variables not getting evaluated
  • Next by thread: Re: CUDA XCompiler