【发布时间】:2015-06-15 03:53:32
【问题描述】:
我有一个类似的问题: Weighted random numbers in MATLAB
此时,我在程序中使用 randsample 如下:
T = [0 .5 .5; .5 0 .5; .5 .5 0]
choices = 1:3
for i = 1:3
t(i) = transpose(randsample(choices,1,true,T(i,:)));
end
因此t(i) 为每个人描述了他们将选择哪个邻居。
我的T 矩阵,当按行阅读时描述了一个人选择邻居的概率。例如,第一行表示第一个人将以 50% 的概率选择节点 2 或 3。他们不能选择他自己的节点 1。当我扩大我的模型时,他们选择邻居的概率总是相等的,1/邻居数。为了简洁起见,我在这里硬编码了 T 矩阵。
我尝试按照链接主题中的建议使用histc,但由于我的T 矩阵的每一行中总是有一个0,我认为累积和不能准确地为行设置bin中间有一个 0(这里是 T 的第二行)。
我也尝试使用bsxfun,当单独查看T 矩阵的每一行时,我能够获得有意义的输出,但我未能将其放入循环中。我觉得解决方案可能就在这里,但我不确定我是否完全理解这个函数在我的上下文中是如何运作的。
那么,有人知道如何加快我的 randsample 函数吗? 目前,我将它迭代 10000 倍,因此它是我程序的主要瓶颈。它可以按我的需要工作,只是太慢了。
【问题讨论】:
-
你的问题对我来说似乎没问题。但以防万一,这些是关于如何提出好问题的手册:How to Ask、stackoverflow.com/help/mcve
标签: matlab