【问题标题】:Matlab: vectorizing update for annotation variableMatlab:注释变量的矢量化更新
【发布时间】:2013-05-16 00:18:45
【问题描述】:

使用 Matlab,我创建了一个图形用户界面,在屏幕上包含 100 个圆圈。我将每个注释的句柄存储在一个称为神经元的向量中。在每次迭代中,我想将每个圆圈移动一定量。这些位移存储在称为位移的矩阵中,其中第 i 行给出第 i 个神经元的位移向量。我使用 for 循环中的 get/set 命令更新每个圆的位置。

    for i=1:length(neurons)
        neuronPos=get(neurons(i),'Position');
        neuronPos=neuronPos+displacement(i,:);
        set(neurons(i),'Position',neuronPos);
    end;

上面的代码工作得很好。但如果可能的话,我想知道如何向量化这个操作。我知道使用get命令可以得到一个所有圆的位置矩阵(它实际上是返回一个单元格,但是使用cell2mat可以很容易地转换)。

get(neurons,'Position');

但我想不出一种方法来使用 set 命令同时更新所有圆圈的位置。任何帮助将不胜感激。

【问题讨论】:

    标签: matlab annotations vectorization


    【解决方案1】:

    您应该将属性包含在{} 中,neuronPos 应该是一个列单元格数组,每个单元格中都有位置:

    set(neurons, {'position'}, neuronPos)
    

    【讨论】:

    • 谢谢,这正是我要找的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    相关资源
    最近更新 更多