变幅正弦波matlab

时间:2013-11-05 13:04:17

标签: matlab sine

尝试在相同的轨迹内生成具有多个不同幅度时期的正弦函数。

例如,幅度为1的2Hz正弦波持续10秒,10个等级的幅度为10,然后再返回幅度1持续10秒。

我尝试在此处编辑示例:http://www.mathworks.se/help/slcontrol/ug/frest.sinestream.html 但是代码出错:

input = frest.Sinestream('Frequency',[2 2 2],...
         'Amplitude',[1 10 1],...
         'FreqUnits','Hz',...
         'SamplesPerPeriod',[40 40 40],...
         'RampPeriods',[0 0 0],...
         'SettlingPeriods',[1 1 1]);
      plot(input)

从中收到的错误是:

Error using frest.Sinestream/set.Frequency (line 127)
The "Frequency" parameter of a sinestream signal should be a double vector consisting of unique values.

Error in frest.Sinestream/initializeParams (line 508)
                obj.(varargin{2*ct-1}) = varargin{2*ct};

Error in frest.Sinestream (line 80)
            obj = initializeParams(obj,inputparams{:});

Error in sine (line 1)
input = frest.Sinestream('Frequency',[2 2 2],...

1 个答案:

答案 0 :(得分:3)

我认为它可能就像这样简单:

x=0:0.005:30;
y = sin(x*2000);

idx = 10<x & x < 20;
y(idx) = 10*y(idx);

plot(x,y)

当然,如果值不为零,这可能会在变化点处产生一些粗略的过渡。这个例子说明了这一点:

x=0:0.005:30;
y = sin(x);

idx = 10<x & x < 20;
y(idx) = 10*y(idx);

plot(x,y)