根据两个变量绘制 3D 误差函数
Plot 3D error function depending on two variables
我正在寻找与此类似的东西 但在八度音程中。
我有一个函数 f(a,b)
returns 我有一个错误 r
和 a
和 b
的多个值的两个列表我想 运行 这个函数并评估错误。由于这是一个多维函数,我无法绘制 2d 线图来显示错误,而是使用 3d 图。
给定两个列表:
list_a =[.1 1 10 100 1000 10000 100000]
list_b =[.1 1 10 100 1000 10000 100000]
和函数 f(a,b)
,哪个是创建此 3d 图的最佳方法?创建一个 matrix_r
代表每个组合的误差然后绘制它?
如果我有那个矩阵,我如何使用八度在 3d 中绘制它?
谢谢
举个例子。鉴于您选择的列表,我将其设为对数:)
list_a = logspace( -1, 5, 50 );
list_b = logspace( -1, 5, 50 );
f = @ (a,b) (a+b).^2; % a simulated error function
[ Grid_a, Grid_b ] = ndgrid( list_a, list_b );
F = log( f( Grid_a, Grid_b ) ); % log error evaluated on the gridpoints
SurfObj = surf( list_a, list_b, F );
Axes = get( SurfObj, 'parent' );
set( Axes, 'xscale', 'log', 'yscale', 'log' ) % use logarithmic axes
从这里您还可以为其指定自定义颜色条,例如
CBar = colorbar;
toLog = @(x) sprintf('10e%d', x);
CTicks = get( CBar, 'ytick' );
set( CBar, 'yticklabel', arrayfun( toLog, CTicks, 'UniformOutput', false ) )
或者如果您更喜欢关注形状而不是数值,您可以创建一个纯色对象并在其上放置灯光:
set( SurfObj, 'facecolor', 'blue' )
light( 'position', [8, 12, 25] )
我正在寻找与此类似的东西
我有一个函数 f(a,b)
returns 我有一个错误 r
和 a
和 b
的多个值的两个列表我想 运行 这个函数并评估错误。由于这是一个多维函数,我无法绘制 2d 线图来显示错误,而是使用 3d 图。
给定两个列表:
list_a =[.1 1 10 100 1000 10000 100000]
list_b =[.1 1 10 100 1000 10000 100000]
和函数 f(a,b)
,哪个是创建此 3d 图的最佳方法?创建一个 matrix_r
代表每个组合的误差然后绘制它?
如果我有那个矩阵,我如何使用八度在 3d 中绘制它?
谢谢
举个例子。鉴于您选择的列表,我将其设为对数:)
list_a = logspace( -1, 5, 50 );
list_b = logspace( -1, 5, 50 );
f = @ (a,b) (a+b).^2; % a simulated error function
[ Grid_a, Grid_b ] = ndgrid( list_a, list_b );
F = log( f( Grid_a, Grid_b ) ); % log error evaluated on the gridpoints
SurfObj = surf( list_a, list_b, F );
Axes = get( SurfObj, 'parent' );
set( Axes, 'xscale', 'log', 'yscale', 'log' ) % use logarithmic axes
从这里您还可以为其指定自定义颜色条,例如
CBar = colorbar;
toLog = @(x) sprintf('10e%d', x);
CTicks = get( CBar, 'ytick' );
set( CBar, 'yticklabel', arrayfun( toLog, CTicks, 'UniformOutput', false ) )
或者如果您更喜欢关注形状而不是数值,您可以创建一个纯色对象并在其上放置灯光:
set( SurfObj, 'facecolor', 'blue' )
light( 'position', [8, 12, 25] )