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

如何修改函数使参数λ支持向量输入以批量验证离散系统稳定性

Matlab离散系统稳定性验证多λ支持改造方案

原代码问题梳理

  • 存在硬编码bug:函数接收输入参数k后,第一行直接赋值k=5,会覆盖所有输入的取值,导致参数传入无效
  • 稳定判据逻辑反向:离散LTI系统稳定要求所有极点模长≤1,原代码判断max(pm)>1时输出稳定,和实际判据相反
  • 仅支持单个λ值传入,无法批量验证

核心改造思路

  • 移除参数硬编码语句,保留输入参数的有效性
  • 新增向量输入遍历逻辑,循环处理每个λ取值
  • 替换已弃用的roundn函数为兼容新版Matlab的round函数,保留4位小数的精度要求
  • 增加带λ取值标识的格式化输出,可区分不同取值的验证结果
  • 保留可选的零极点绘图能力,可按需开启

改造后完整代码

function stable2(lambda_vec)
% 输入参数 lambda_vec: 包含多个待验证λ取值的向量
    % 遍历所有输入的λ取值
    for idx = 1:length(lambda_vec)
        k = lambda_vec(idx);
        % 构造系统传递函数分子分母
        b = [0 0 k 0 0];
        a = [1 -4 k+6 -4 1];
        
        % ---------- 可选:开启后为每个λ生成单独的零极点图 ----------
        % figure('Name', sprintf('λ=%.4f 零极点分布', k));
        % zplane(b,a);
        % % 可选:自动保存零极点图到当前目录
        % saveas(gcf, sprintf('lambda_%.4f_zplane.png', k));
        % ---------------------------------------------------------
        
        % 计算极点并判断稳定性
        p = roots(a);
        pm = round(abs(p), 4); % 等价于原roundn(abs(p), -4),兼容新版Matlab
        if max(pm) <= 1
            fprintf('λ=%.4f  |  系统稳定\n', k);
        else
            fprintf('λ=%.4f  |  系统不稳定\n', k);
        end
    end
end

使用示例

如果需要验证λ取1、1.5、2、3时的稳定性,直接在Matlab命令行执行:
stable2([1, 1.5, 2, 3])
即可一次性输出所有取值对应的稳定性结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:27:04