通过将信号乘以数组来限制信号

Limiting a signal by multiplying it by an array

我试图通过将信号与数组相乘来限制信号,以将幅度限制在一定范围内。 (绿色)tot 数组 中的信号不应该超过 (红色)ptest 数组 中的限制数组,但它确实,我该如何解决这个问题,使绿色信号不超过红线(ptest 数组)?请参阅下面的代码和绘图。 请注意这是一个简单的测试,信号会更复杂。

我正在使用 octave 3.8.1,它类似于 matlab

fs=200
x=[0,.2,.5,1]
y=[1,.5,.1,0]

t=linspace(0,x(end),fs);
peq=polyfit(x,y,length(y)); %create polynomial from points

ptest=polyval(peq,t); %plug numbers into polynomial
plot(ptest,t,'-ro') 
hold on 
plot(x,y,'b*')

t2=linspace(0,2*pi,fs);
s1 = sin(10*t2) ; %signal to limit
tot=ptest.*s1;
plot(t,tot,'-g')

您的绘图代码中有错字。您在第一个 plot 调用中翻转了 tptest

plot(ptest,t,'-ro');

这应该是:

plot(t,ptest,'-ro');

独立轴是时间或t,但你已经把它设为ptest

当我翻转这个和 运行 代码时,我得到:

顺便说一句,你的问题有点误导。我不会称之为 "limiting"...你实际上是 调制 正弦信号的幅度与 ptest 信号的幅度。