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

Matlab分段函数矩阵乘法维度错误问题求助

问题分析与解决方案

错误原因

你的代码存在两处关键问题:

  1. 未正确更新时间变量t:t/1000;仅计算结果但未赋值回t,导致t仍是1到1000的整数序列,代入sin(2*pi*1000*t)后结果全为0(2π*1000*t是2π的整数倍,正弦值为0),完全不符合预期输入信号。
  2. 矩阵乘法误用:(vi-0.72)*exp(-t)使用了矩阵乘法*,但vi-0.72和exp(-t)是同维度行向量,矩阵乘法要求第一个矩阵列数等于第二个矩阵行数,此处不满足,必须用**元素级乘法.***实现对应元素相乘。

修正后的代码

t = 1:1000;
t = t / 1000;  % 将时间序列修正为0.001到1的范围
vi = sin(2*pi*1000*t);
VD = 0.72;
% 替换为元素级乘法.*
vo = piecewise(vi < VD, 0, vi > VD, (vi - VD) .* exp(-t));

兼容性替代方案

若你的MATLAB版本不支持piecewise处理数值数组,可使用逻辑索引实现分段函数,兼容性更好:

t = 1:1000;
t = t / 1000;
vi = sin(2*pi*1000*t);
VD = 0.72;
vo = zeros(size(vi));  % 初始化输出数组
idx = vi > VD;  % 筛选vi大于VD的索引
vo(idx) = (vi(idx) - VD) .* exp(-t(idx));

内容的提问来源于stack exchange,提问作者A Burial At Ornans

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:42:05