5

假设这srcHoughMatrix是一个 3 维矩阵:

代替

    if (currentRadius >= MINIMUM_ALLOWED_RADIUS )
    % we're using only radiuses that are 6 or above 
        currentHough = srcHoughMatrix(index,jindex,currentRadius);
        srcHoughMatrix(index,jindex,currentRadius) = currentHough + 1;
    end

1如果条件为真,如何在不使用临时变量或不使用临时变量的情况下添加到每个单元格

srcHoughMatrix(index,jindex,currentRadius)  = srcHoughMatrix(index,jindex,currentRadius)  + 1;

谢谢

4

2 回答 2

7

并不是说我不会按照@Jonas 的建议去做,但是使用operator呢?它用于定义新的用户定义的运算符符号或删除它们(尽管您将需要符号工具箱)。

operator(symb, f, T, prio)定义symb类型为T(Prefix | Postfix | Binary | Nary) 的新运算符符号,优先级prio。该函数f使用 new 运算符计算表达式。

给定运算符符号“++”,例如,使用评估函数f,解析器将根据运算符的类型构建以下表达式,其中:

前缀:输入 ++x 结果为 f(x)。

后缀:输入 x++ 结果为 f(x)。

二进制:输入 x ++ y ++ z 结果为 f(f(x, y), z)。

Nary : 输入 x ++ y ++ z 结果为 f(x, y, z))。

在 matlab 的文档中查看更多信息。

于 2013-01-08T22:11:45.483 回答
5

Matlab 没有++运算符。

但是,如果您想缩短语句并避免使用临时变量,您至少可以编写

srcHoughMatrix(index,jindex,MINIMUM_ALLOWED_RADIUS:end) = ... 
    srcHoughMatrix(index,jindex,MINIMUM_ALLOWED_RADIUS:end) + 1;

(假设它currentRadius采用从 1 到数组的第三维大小的所有值)。

于 2013-01-08T22:03:00.150 回答