Matlab 尝试管理等高线标高时出错?

Matlab 尝试管理等高线标高时出错?,matlab,octave,contourf,Matlab,Octave,Contourf,下面是一个模拟两个相反带电粒子周围电势的代码: clc; clear; close all; e_0 = 8.987E-9; % Coulomb's constant xy = [1,2.5; 4,2.5]; % particle coordinates. q = [1; -1]; % particle charge. sBeg

下面是一个模拟两个相反带电粒子周围电势的代码:

clc; clear; close all;

e_0 = 8.987E-9;                             % Coulomb's constant
xy = [1,2.5; 4,2.5];                        % particle coordinates.
q = [1; -1];                                % particle charge.

sBeg = 0;
sStep = 0.1;
sEnd = 5;
[X,Y] = meshgrid(sBeg : sStep : sEnd);      % generate a 2D-coordinate grid 

V_E = zeros( size(X) );                     % initialise electric potential field.

for i = 1 : numel(q)                        % add potential fields of each charge

  V_E = V_E + e_0 * q(i) ./ hypot( xy(i,1 ) - X, xy(i, 2) - Y );

end

contourf(X,Y, V_E);
ylabel( colorbar, 'Electric Potenial (V)' )
结果:

轮廓密集地集中在粒子位置附近,如何更均匀地“散布”它们,同时保持轴的相同比例

注意:

我试过:

hc = contourf(X,Y,V_E);

contourLevels = [ 0 quantile( V_E(:), 10 ) ];
hc.LevelList = contourLevels;
从,但我得到以下错误:

错误:对cs列表的分配在多个分配之外无效

我做错了什么


我正在Windows 10上运行Octave-4.2.1。

Vue似乎呈指数级增长;因此,获得“线性”轮廓图像的最佳方法是绘制其对数

我认为这是一个更合理的情节。但是如果您必须报告原始震级而不是它们的对数,您可以简单地更改颜色栏上的“ticklebels”以反映您想要的值,例如

contourf(X,Y, log(V_E));
ylabel( cb = colorbar, 'Electric Potenial (V)' ) # note added 'cb' step
set(cb, 'yticklabel', exp(get(cb, 'ytick')))

ve似乎呈指数增长;因此,获得“线性”轮廓图像的最佳方法是绘制其对数

我认为这是一个更合理的情节。但是如果您必须报告原始震级而不是它们的对数,您可以简单地更改颜色栏上的“ticklebels”以反映您想要的值,例如

contourf(X,Y, log(V_E));
ylabel( cb = colorbar, 'Electric Potenial (V)' ) # note added 'cb' step
set(cb, 'yticklabel', exp(get(cb, 'ytick')))