You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以匿名函数为边界生成间隔取值的Linspace序列?

解决方案:基于匿名函数边界生成间隔取值的Linspace序列

嘿,我懂你碰到的这个小麻烦了——用固定数值当linspace边界时一切顺畅,但换成匿名函数就卡壳了对吧?核心问题其实很简单:匿名函数是个函数句柄,不是直接的数值,得先调用它算出具体值才能给linspace用。下面给你两个实用的解决方案,按需选就行:

方案一:先求值再复用原有逻辑

如果你的匿名函数输入参数(比如示例里的t)是固定的,先调用匿名函数得到具体的边界数值,剩下的逻辑就和你原来的代码完全一致了:

n = 5;
% 先确定匿名函数的输入参数t(这里假设t=2,你可以换成自己需要的值)
t = 2;
% 定义你的匿名函数边界
left = @(t) 0.5 * t;
right = @(t) 1.5 * t; % 补全右侧边界的匿名函数示例

% 关键步骤:调用匿名函数得到具体数值
left_val = left(t);
right_val = right(t);

% 剩下的逻辑和你原来的代码一致
y = zeros(n, 1);
x = linspace(left_val, right_val, n)';
q = zeros(2*n, 1);
q(1:2:end) = x;
q(2:2:end) = y;

方案二:封装成函数,动态传入参数(更灵活)

如果需要多次针对不同的t值生成序列,把整个逻辑封装成一个可调用的函数会更方便,每次只用传入n和t就行:

function q = generate_spaced_sequence(n, t)
    % 定义匿名函数边界
    left = @(t) 0.5 * t;
    right = @(t) 1.5 * t;
    
    % 调用匿名函数获取边界值
    left_val = left(t);
    right_val = right(t);
    
    % 生成间隔序列
    y = zeros(n, 1);
    x = linspace(left_val, right_val, n)';
    q = zeros(2*n, 1);
    q(1:2:end) = x;
    q(2:2:end) = y;
end

% 调用示例
n = 5;
t = 3; % 可以随时替换成其他t值
q = generate_spaced_sequence(n, t);

关键提醒

如果你的匿名函数需要多个输入参数,只需要在调用时传入对应的参数即可,比如left = @(a,b) a*b + 1,调用时就写left_val = left(2,3)。

内容的提问来源于stack exchange,提问作者BeiHerta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:05:20