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条件が true の場合、一時変数を使用せずに、または使用せずに各セルに追加するにはどうすればよいですか

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 演算子を使用して式を評価します。

たとえば、 function を評価する演算子記号「++」を指定するとf、演算子のタイプに応じて、次の式がパーサーによって作成されます。

Prefix : 入力 ++x は f(x) になります。

Postfix : 入力 x++ は f(x) になります。

Binary : 入力 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 から配列の 3 次元サイズまでのすべての値を取ると仮定します)。

于 2013-01-08T22:03:00.150 に答える