尝试管理轮廓级别时出错?
Error while trying to Manage Contour levels?
这里是模拟两个带相反电荷的粒子周围的电势的代码:
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)' )
结果:
轮廓在粒子位置附近密集分布,如何"spread them"更均匀,同时保持轴的比例不变?
注意:
我试过:
hc = contourf(X,Y,V_E);
contourLevels = [ 0 quantile( V_E(:), 10 ) ];
hc.LevelList = contourLevels;
来自 here,但我收到以下错误:
error: invalid assignment to cs-list outside multiple assignment
我做错了什么?
我是 运行 Octave-4.2.1 Windows 10.
V_E似乎呈指数级增长;因此,获得 'linear' 轮廓图像的最佳方法是绘制其对数。
无论如何,我会说这是一个更明智的情节。但是,如果您 必须 报告原始幅度而不是它们的对数,那么您可以简单地更改颜色条上的 'ticklabels' 以反映您想要的值,例如..
contourf(X,Y, log(V_E));
ylabel( cb = colorbar, 'Electric Potenial (V)' ) # note added 'cb' step
set(cb, 'yticklabel', exp(get(cb, 'ytick')))
这里是模拟两个带相反电荷的粒子周围的电势的代码:
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)' )
结果:
轮廓在粒子位置附近密集分布,如何"spread them"更均匀,同时保持轴的比例不变?
注意:
我试过:
hc = contourf(X,Y,V_E);
contourLevels = [ 0 quantile( V_E(:), 10 ) ];
hc.LevelList = contourLevels;
来自 here,但我收到以下错误:
error: invalid assignment to cs-list outside multiple assignment
我做错了什么?
我是 运行 Octave-4.2.1 Windows 10.
V_E似乎呈指数级增长;因此,获得 'linear' 轮廓图像的最佳方法是绘制其对数。
无论如何,我会说这是一个更明智的情节。但是,如果您 必须 报告原始幅度而不是它们的对数,那么您可以简单地更改颜色条上的 'ticklabels' 以反映您想要的值,例如..
contourf(X,Y, log(V_E));
ylabel( cb = colorbar, 'Electric Potenial (V)' ) # note added 'cb' step
set(cb, 'yticklabel', exp(get(cb, 'ytick')))