0

この Matlab コードは、ベクトル X と Y に保存されている値をプロットすることになっています。これらは、ユーザーによって既に入力されています。ここでの問題は、複素数と実数の極をクリックすると、プロットは正しい点をもたらしますが、実際の極、出力は奇妙です。x 軸が y 軸上にあるようなもので、横軸が正確にはわかりません。

axis([-10,10,-10,10])
grid
[x,y] = ginput 

subplot(2,2,1)
axis([-10,10,-10,10])
grid

subplot(2,2,2)
axis([-10,10,-10,10])
hold all
grid


x = round (x)
y = round (y)

if( y > 0.5 | y < 0.5)
r1 = x + i*y
r2 = conj(r1)

plot (r1,'*')
hold all 
plot (r2,'*')

else

plot (x,y)

end
4

2 に答える 2

1

あなたが何を言っているのか100%わかりませんが、以下に示すように、問題はifステートメントにあると思います。具体的には、y = .5でない限り、最初の句を入力することはできません。abs(y)<0.5[-0.50.5]の間を見たいと思ったのではないでしょうか。次に、2つのプロットが互いに一致せず、最初のプロットは複素数をプロットし、2番目のプロットはx値とy値をプロットします。それは正しくないようですが、あなたが何をしようとしているのかわからないので、それを修正する方法がわかりません。

if( y > 0.5 | y < 0.5)

    r1 = x + i*y
    r2 = conj(r1)

    plot (r1,'*')
    hold all 
    plot (r2,'*')

else

    plot (x,y)

end
于 2012-12-01T11:49:20.763 に答える
0

問題は、Yがこの範囲内にある必要があることでした: if ( y > 0.5 | y < -0.5 ) 私は間違ってそれを書きました:if ( y > 0.5 | y < 0.5 )

そして、この範囲が必要な理由は、Y 軸が虚数軸を表し、X 軸が実数軸を表しているため、実数を入力しようとすると、y 座標には常に y = 0.001 などの値が含まれるからです。 、それは決してゼロに等しくないことを意味します。そのため、Y の値が 0.5 より大きいか -0.5 より小さい場合は複素数であり、そうでない場合は実数であることを保証するために、この近似が必要でした。

そして最後に、次のものを使用しました: scatter (x,y,'filled')plot cause plot の代わりに、点ではなく線を描画しました。

みんなありがとう:)

于 2012-12-01T17:43:28.457 に答える