1

粒子のデータセットがあります。

列 1 は粒子の電荷、列 2 は x 座標、列 3 は y 座標です。

列 1 の名前を c_particles、列 2 の x_particles、列 3 の y_particles に変更しました。

x 対 y の散布図を作成する必要がありますが、電荷が正の場合はマーカーを赤にし、電荷が負の場合はマーカーを青にする必要があります。

これまでのところ、

if c_particles < 0
scatter(x_particles,y_particles,5,[0 0 1], 'filled')
else
scatter(x_particles,y_particles,5,[1 0 0], 'filled')
end

これはプロットを生成していますが、マーカーはすべて赤です。

4

1 に答える 1

3

あなたの最初の行は、あなたが思っていることをしていません:

c_particles < 0

と同じ長さのブール値のベクトルを返しc_particlesます。ifは、少なくとも 1 つの要素が true である限り、この配列を true として扱います。代わりに、この「論理配列」を使用して、プロットする粒子にインデックスを付けることができます。私はこれを試してみます:

i_negative = (c_particles < 0);       % logical index of negative particles
i_positive = ~i_negative;             % invert to get positive particles
x_negative = x_particles(i_negative); % select x-coords of negative particles
x_positive = x_particles(i_positive); % select x-coords of positive particles
y_negative = y_particles(i_negative);
y_positive = y_particles(i_positive);

scatter(x_negative, y_negative, 5, [0 0 1], 'filled');
hold on; % do the next plot overlaid on the current plot
scatter(x_positive, y_positive, 5, [1 0 0], 'filled');
于 2012-09-28T05:35:09.193 に答える