How to choose subset of cell arrays?

8 ビュー (過去 30 日間)
Tintin Milou
Tintin Milou 2015 年 2 月 21 日
コメント済み: per isakson 2015 年 2 月 21 日
Hi all,
I have the following problem: I have 30 experiments and would like to plot them several graphs. The user should be able to decide which experiments to plot on the same graph and which on different ones. For that I introduced a cell array, e.g.
plotselect = {[2 5],[4]}
Here, experiments 2 and 5 shall be plotted on the same graph, whereas experiment 4 shall be plotted on a second graph. I also allow the user to choose which experiments (out of 30) to run in the first place.
expselect = [1:4];
That runs the first four experiments. As you can see, the user might want to run more experiments than what he's actually going to plot. But the values in plotselect must be a subset of expselect. How can I retrieve the values in plotselect that are also in expselect? That is, I'd like to get
plotselect = {[2],[4]}

採用された回答

Guillaume
Guillaume 2015 年 2 月 21 日
As per's answer, you need to use intersect. A cellfun lets you keep the original structure of your plotselect:
plotselect = {[2 3 5], [3 4 6], 2};
expselect = 1:4;
plotselect = cellfun(@(v) intersect(v, expselect), plotselect, 'UniformOutput', false)

その他の回答 (1 件)

per isakson
per isakson 2015 年 2 月 21 日
編集済み: per isakson 2015 年 2 月 21 日
Hint:
>> intersect( expselect, cell2mat( plotselect ) )
ans =
2 4
>>
This assumes that all cells in plotselect contain numerical rows or scalars.
After a second reading of the question
>> num2cell( intersect( expselect, cell2mat( plotselect ) ) )
ans =
[2] [4]
>>
  2 件のコメント
Guillaume
Guillaume 2015 年 2 月 21 日
I believe that either solution lose the grouping of plots.
per isakson
per isakson 2015 年 2 月 21 日
Yes!

サインインしてコメントする。

カテゴリ

Help Center および File Exchange2-D and 3-D Plots についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by