你怎么能在matlab中绘制一个子函数?

时间:2017-05-17 20:58:36

标签: matlab plot

我无法弄清楚如何使用情节来绘制我的节目的子功能。

$(function() {
    $('.block-btns button').on('click', function() {
        // toggle button's content, hide other content
        $('.wrapper > div').eq($(this).index()).toggle().siblings().hide();
    });
    $('.wrapper .close').on('click', function() {
        // hide active content
        $(this).closest('div').hide();
    });
});

如果你不想写一个子功能,请你详细说明如何使用情节绘制子功能。我确定我会再次遇到这个问题。

2 个答案:

答案 0 :(得分:2)

将字符串传递给像fplot(或ode45这样的函数)很可能不适用于本地函数或嵌套函数,因为它们很可能会使用像{{3}这样的函数}或str2func。在这两种情况下,定义本地或嵌套函数的上下文都隐藏在fplotode45中,并且找不到该函数,因为它不在MATLAB的路径上。

避免此问题的方法几乎总是使用函数句柄。函数句柄将绑定适当的上下文数据,一切都将按预期工作。考虑这个例子,它将打印由句柄创建提供的元信息:

function [] = main() 
    potfun = @potential;
    fplot(potfun, [0.98,2]);

    %   To see more clearly what information the handle has:
    functions(potfun)
end
function v = potential(x)
   v = 4 * (x.^-12 - x.^-6);
end

(我也转向了元素指数运算符,这几乎总是一个好主意。)

这将从feval打印以下结构:

>> main
ans = 
     function: 'potential'
         type: 'scopedfunction'
         file: 'C:\main.m'
    parentage: {'potential'  'main'}

可以看出,提供了从其他功能调用子功能("范围功能"显然)的完整所需上下文。

答案 1 :(得分:0)

使用arrayfun

x = 0.98:00.1:2;
y = arrayfun(@(x)4 * (x^-12 - x^-6),x); 
% or y = arrayfun(@(x)potential(x),x)
plot(x,y);

如果步骤不重要,请使用以下代码:

fplot(@(x)potential(x), [0.98, 2])