首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PsychoPy:如何更改DotStim或ElementArrayStim中的元素数?

PsychoPy:如何更改DotStim或ElementArrayStim中的元素数?
EN

Stack Overflow用户
提问于 2015-09-14 13:54:16
回答 2查看 365关注 0票数 1

假设我生成了一个dots = psychopy.visual.DotStim。以后是否有可能更改点的数量?dots.nDots = 5会导致下一个dots.draw()上的错误,因为底层矩阵不匹配:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/home/jonas/Documents/projects/work pggcs/experiment/dots.py", line 32, in <module>
    dots_right.draw()
  File "/usr/lib/python2.7/dist-packages/psychopy/visual/dot.py", line 279, in draw
    self._update_dotsXY()
  File "/usr/lib/python2.7/dist-packages/psychopy/visual/dot.py", line 362, in _update_dotsXY
    self._verticesBase[:,0] += self.speed*numpy.reshape(numpy.cos(self._dotsDir),(self.nDots,))
  File "/usr/lib/python2.7/dist-packages/numpy/core/fromnumeric.py", line 218, in reshape
    return reshape(newshape, order=order)
ValueError: total size of new array must be unchanged

psychopy.visual.ElementArrayStim也是如此,对其设置stim.nElements = 5同样会导致下一次抽签时出现错误。

当然,解决方案是在每次点/元素的数量发生变化时实例化一个全新的DotStimElementArrayStim,但这似乎太重了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-14 13:58:03

它可以为DotStim修复

代码语言:javascript
复制
dots.nDots = 5
dots._dotsDir = [0]*dots.nDots
dots. _verticesBase = dots._newDotsXY(dots.nDots)

将所有点的移动设置为0,但可以将该值更改为任何您喜欢的值,也可以为单个点指定。如果您修改DotStim的其他方面,这是一种可能会破坏的黑客行为。

我还没有想出ElementArrayStim的解决方案。

票数 1
EN

Stack Overflow用户

发布于 2015-09-15 09:12:47

是的,能这么做会很好,但我还没来得及解决。当nDot/nElements发生变化时必须运行的代码非常接近于从零开始使用新的刺激。init因此在“正确”中添加这一点可能意味着一些重构(将大量init代码移到setNDots()中,然后从init调用)。

还有一个潜在的问题,就是元素可能已经改变(例如,用户已经设置了方向),然后更新元素的数量。我们要移除哪些?我们应该给这些人什么样的方向呢?(不过,对于DotStim来说,这不是什么问题。)

基本上,这个问题有点棘手,对我来说没有优先考虑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32566625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档