2017-06-05 46 views
0

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

对于f = 0,信号应该是正弦,而对于f = 1,信号应该是具有相同频率的矩形信号。为了增加01之间的值,信号应该与矩形信号类似地增加。

不幸的是,我不知道如何使用Matlab来实现。有没有人有一个想法如何做到这一点?

我的想法是使用矩形信号的傅里叶级数,并且 - 取决于参数f - 考虑它的不同数目的加数。

+2

的简单方法是'X = 0:0.1:2 * PI; y = min(max(sin(x)./(1-f),-1),1)'。此外,请注意,使用傅立叶级数方法,您将获得[Gibbs pehenomenon](https://en.wikipedia.org/wiki/Gibbs_phenomenon),因此结果永远不会像[统一公制](https: //en.wikipedia.org/wiki/Uniform_norm)意义(即总会有非减幅的尖峰) –

+0

非常感谢!这正是我所期待的。 – Peter123

回答

1

您可以使用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))) 

输出:

wave