m0_70370639 2023-05-12 22:44 采纳率: 66.7%
浏览 15

simluink输出怎么在Matlab还原

假设在simluink中的输出长为1801
输入轨迹为1801,那么如果要在Matlab中用卷积还原结果,系统的脉冲响应长度怎么取,因为在Matlab中conv结果的长度为N+M-1,N参考轨迹的长度
M系统的脉冲响应长度,怎么还原simulink结果
就是用Matlab怎么算出simulink相同的结果

  • 写回答

2条回答 默认 最新

  • 技术宅program 2023-05-16 16:55
    关注

    在这个问题中,Simulink的输出长度为1801,输入轨迹也为1801。要在Matlab中使用卷积运算还原相同结果,需要正确选择系统的脉冲响应长度M。
    根据卷积运算的长度计算公式:conv结果长度 = N + M - 1
    其中N为输入轨迹长度,M为脉冲响应长度。
    为得到相同于Simulink的输出结果1801,需要满足:
    1801 = 1801 + M - 1
    解得:M = 1801
    所以,在Matlab中为得到跟Simulink相同的输出结果,系统的脉冲响应长度M需要取1801。
    Matlab中的代码可以如下:

    matlab
    N = 1801;  % 输入轨迹长度
    M = 1801;  % 脉冲响应长度
    
    x = rand(N,1);    % 随机输入轨迹
    h = rand(M,1);    % 随机脉冲响应
    
    y = conv(x,h);    % 卷积运算
    
    

    此时y的长度为:1801 + 1801 - 1 = 3601
    由于我们取M = 1801,正好可以得到与Simulink输出相同长度的结果1801。如果M取其他值,则无法得到相同结果。
    所以,在利用卷积运算还原Simulink的输出结果时,正确选择系统的脉冲响应长度M是关键。需要根据公式计算使得卷积结果长度等于Simulink的输出长度,此时取M = 1801。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月12日

悬赏问题

  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥100 单片机hardfaulr
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费