MATLAB: How to access data from a table

table

I have a Table with 2 different set of experiments. each experiments have 2 subexperiments. each subexperiment have 5 sets of data. How to plot a graph of each subexperiment results? I need a plot of all subexperiments.

Best Answer

  • You don't need table2array.
    Your example data don't seem to match either description, so I'm just guess what they look like. Also you don't say what kind of plot.
    >> type = [1;1;1;1;1;2;2;2;2;2;3;3;3;3;3];
    >> subexperiment = [1;2;3;4;5;1;2;3;4;5;1;2;3;4;5];
    >> result = randn(15,1);
    >> t = table(type,subexperiment,result)
    t =
    15×3 table
    type subexperiment result
    ____ _____________ __________________
    1 1 -0.204966058299775
    1 2 -0.124144348216312
    1 3 1.48969760778546
    1 4 1.40903448980048
    1 5 1.41719241342961
    2 1 0.67149713360808
    2 2 -1.20748692268504
    2 3 0.717238651328838
    2 4 1.63023528916473
    2 5 0.488893770311789
    3 1 1.03469300991786
    3 2 0.726885133383238
    3 3 -0.303440924786016
    3 4 0.293871467096658
    3 5 -0.787282803758638
    >> i1 = (t.type == 1);
    >> plot(t.subexperiment(i1),t.result(i1))
    That plots all the type 1 results. Put that in a loop, perhaps using subplot. It's also pretty simple to do something like
    rowfun(@plot,t,'GroupingVariable','type','NumOutputs',0)
    but actually you'd need to write a two-line function that made a new figure window or paused or something, otherwise you'll only see the last plot.