使用 Matlab 生成从正弦波转换为矩形的信号

Generating a signal that transforms from sine to rectangular shape using Matlab

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

对于f = 0,信号应该是正弦信号,而对于f = 1,信号应该是具有相同频率的矩形信号。对于 01 之间的增加值,信号应该像矩形信号一样增加。

不幸的是,我不知道如何使用 Matlab 实现这一点。有人知道怎么做吗?

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

您可以使用 square.

生成周期为 2π 的纯方波

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

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)))

输出: