我无法弄清楚如何使用情节来绘制我的节目的子功能。
$(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();
});
});
如果你不想写一个子功能,请你详细说明如何使用情节绘制子功能。我确定我会再次遇到这个问题。
答案 0 :(得分:2)
将字符串传递给像fplot
(或ode45
这样的函数)很可能不适用于本地函数或嵌套函数,因为它们很可能会使用像{{3}这样的函数}或str2func
。在这两种情况下,定义本地或嵌套函数的上下文都隐藏在fplot
和ode45
中,并且找不到该函数,因为它不在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])