7

私はこれらの2つのベクトルを持っています:

alpha =
     1    1    1    1    1    1    1    1    1

f_uv =
   193  193  194  192  193  193  190  189  191

そして、私がこれを行うとき:

alphaf_uv = alpha * f_uv'

エラーメッセージが表示されます:

"??? Error using ==> mtimes
Integers can only be combined with integers of the same class, or scalar doubles." 

興味深いのは、コンソールで同じベクトルを定義し、そこで乗算を試みても、このエラーは表示されないことです。

alphaは私が定義したf_uvもので、PNG 画像の一部のピクセルから取得されます。

4

3 に答える 3

16

そもそも両方が整数行列であると仮定すると、そうでf_uv'はないかもしれません。

試す:

alphaf_uv = double(alpha) * double(f_uv')

それでも発生する場合はお知らせください。

必要にalphaf_uv応じて、後で整数型に戻す必要がある場合があります。

于 2008-11-22T11:05:32.723 に答える
5

ここでの大きな手がかりはこれです:

alpha は私が定義し、f_uv は png 画像のいくつかのピクセルから取得されます。

これは、f_uvデータが uint8 として入ってくることを強く示唆しています。WHOS コマンドが確認します。コマンド ラインでこれを定義すると、ベクトルはデフォルトで Double になります。そのため、「同一の」マトリックス間の動作の違いが見られます。

于 2008-12-15T20:51:05.217 に答える
0

おそらく f_uv は、.toString() メソッドによって返される「コンソール値」を持つオブジェクトです。この場合、f_uv を (int) としてボックス化する必要があるかもしれません。

于 2008-11-22T11:09:45.647 に答える