2013-08-13 16 views
10

単純な乗算でエラーに遭遇し、むしろ私を驚かせました。ここで何が起こっている、私はいつも*matrix multiplicationのためだと仮定した。単純な行列乗算を使用するとエラーが発生する

x = 2; 
y = zeros(1,4); 
y(1) = 1 *x; 
y(2) = x* 1; 
y(3) = (x *1); 
y(4) = x *1; 
y 
x *1 

は、次のような出力が得られます:

y = 

    2  2  2  1 

Error: "x" was previously used as a variable, 
conflicting with its use here as the name of a function or command. 
See MATLAB Programming, "How MATLAB Recognizes Function Calls That Use Command Syntax" for details. 

誰もがここで起こっているかを理解していますか?もちろん、私はxが機能ではないことを確認しました。

+0

あなたは、MATLABを再起動した後にこれを再現することはできますか? – Dan

+0

@ダン確かにそれは簡単に再現することができる、私は答えがそれを説明すると思います。 –

+0

私はOctaveで試してみましたが問題はありませんでした。 – Dan

答えて

11

間隔によって異なります。より詳細な説明と真のあいまいさがある可能性がある例については、hereも参照してください。基本的に最初の3つは期待通りに機能し、最後は入力* 1の関数xを呼び出そうとしています。

x*1 
x * 1 
x* 1 
x *1 

あなたには、いくつかの変数に出力を割り当てた場合、これは関係なく、間隔、発生しません。

y(2) = x *1 
z = x *1 
x = x *1 
+0

ありがとう、私は関数が存在しない場合、これが関数呼び出しとして解釈されることを認識しませんでした。 –

+3

@DennisJaheruddinこれも試してください: '{[1 + 2]、[1 + 2]、[1+ 2]、[1 +2]}'。このクールクは、私がMATLABについて最も嫌いなことの一つです。 –

9

あなたが別の行にx *1を持っている場合、MATLAB関数としてxを解釈ANそれへの引数として'*1'を渡ししようとしますが、それはx、変数、したがって誤りであることをrealzesので、これが起こります。

+1

ありがとう、私は関数が存在しない場合、これが関数呼び出しとして解釈されることを認識しませんでした。私はこの答えも受け入れることができれば幸いです。 –

関連する問題