Matlab中如何使用匿名函数创建以t为自变量的脉冲串
MATLAB 定义可调整自变量的脉冲串匿名函数方法
你原先的循环写法没有把t作为comb的输入参数,执行循环时会直接调用当前工作区里已赋值的t计算数值结果,最终得到的comb是数值数组而非函数句柄,自然无法后续调整自变量取值。
直接将脉冲串整体定义为以t为入参的匿名函数即可,两种常用实现方式:
- 循环累加写法(逻辑和你原先的思路完全一致,仅保留函数句柄形式)
% 先定义单个脉冲h,示例:h = @(t) double(abs(t) < 0.5) 是脉宽1的矩形脉冲 h = @(t) 自定义的t的函数表达式; N = 所需脉冲总个数; % 初始化脉冲串函数,初始输出为0 comb = @(t) 0; for n = 0:N-1 % 每次迭代叠加一个移位n位的脉冲,始终保持comb为函数句柄 comb = @(t) comb(t) + h(t - n); end
定义完成后,直接传入任意自变量数组即可得到对应结果,例如执行y = comb(0:0.01:20)就能得到0到20区间、采样步长0.01的脉冲串数值,不需要重复定义函数。
- 向量化简写写法(代码更简洁,无循环)
comb = @(t) sum( h(t - (0:N-1).'), 1 );
该写法利用MATLAB数组广播机制,将移位序列转为列向量,一次性计算所有移位脉冲的取值后沿列方向求和,输出维度和输入的t完全一致,适合N规模不大的场景。
注意:定义
comb的过程中不要提前给t赋值为固定数组,只要t是匿名函数的形参,后续可以随时传入任意取值的自变量计算结果。
内容的提问来源于stack exchange,提问作者A.B.A
相关产品推荐
相关产品推荐

