【问题标题】:Generating a signal that transforms from sine to rectangular shape using Matlab使用 Matlab 生成从正弦形状转换为矩形形状的信号
【发布时间】:2017-06-05 13:55:54
【问题描述】:

我想使用 Matlab 生成一个从正弦波转换为矩形的信号,该信号具有递增的参数f。

对于f = 0,信号应该是正弦波,而对于f = 1,信号应该是具有相同频率的矩形信号。对于在0 和1 之间增加的值,信号应该变得类似于矩形信号增加。

不幸的是,我不知道如何使用 Matlab 实现这一点。有谁知道如何做到这一点?

我的想法是使用矩形信号的傅里叶级数,并根据参数f 来考虑不同数量的和数。

【问题讨论】:

  • 一个简单的方法是x = 0:.1:2*pi; y = min(max(sin(x)./(1-f), -1), 1)。另外,请注意,使用傅里叶级数方法,您将获得Gibbs pehenomenon,因此结果永远不会像uniform metric 意义上的矩形(即,始终会有幅度不减小的尖峰)
  • 非常感谢!这正是我想要的。

标签: matlab signals signal-processing numeric


【解决方案1】:

您可以使用square 生成周期为 2π 的纯方波。

您可以对方波和正弦波进行加权平均,作为 Luis 在 cmets 中建议的信号削波的替代方法。

t = 0:0.1:2*pi;
hold on
f = 0;    % entirely sine wave
plot(t, (square(t)*f + sin(t)*(1-f)))
f = 0.5;  % half and half
plot(t, (square(t)*f + sin(t)*(1-f)))
f = 1;    % entirely square wave
plot(t, (square(t)*f + sin(t)*(1-f)))

输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 2011-04-28
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多