【发布时间】:2014-08-03 14:20:51
【问题描述】:
我有这个 sn-p 代码,根据其最短元素的长度对单元数组中的数据进行下采样。
sizeShortest = min(cellfun('size', data, 2));
f=@(x)(x(:,sort(getfield(randperm(size(x,2)),{1:sizeShortest}))));
dummy = cellfun(f, data, 'UniformOutput', false);
我还想跟踪保存在 dummy 中的数据元素的索引(基本上是 randperm 调用中的 1:sizeShortest 值)。
到目前为止我找不到答案...非常感谢任何帮助!
【问题讨论】:
-
你不能再运行另一个
cellfun匿名函数的命令吗:f=@(x) getfield(randperm(size(x,2)),{1:sizeShortest});? -
我实际上也想过,但这不会给出不同的值 - 因为不同的 randperm 调用?
-
每次调用前重置种子。这样,您就可以保证获得相同的索引。您可以在执行任何随机函数之前设置随机种子。这样,您在设置种子后生成的随机值是可重现的。使用
rng命令并将其设置为您希望的任何数字...例如10。运行cellfun命令,然后重置种子回到10。运行第二个cellfun命令。更多关于rng的信息在这里:stackoverflow.com/a/11148581/3250829。我给你写一个答案。 -
啊……好吧,我没想到/不知道。太好了,所以我可以接受你的回答!谢谢
-
不客气!我刚刚添加了它:)