【问题标题】:Shifting signal down下移信号
【发布时间】:2011-10-27 20:54:52
【问题描述】:

我有一个从 0 到 1 的信号,用于 y 轴上的正方形、矩形和锯齿信号我如何将信号向下移动(垂直偏移),以便信号从 -0.5 变为 0.5 y轴,把三角信号从0.5改成1.0改-0.5改成0.5?

clear all
% SCRIPT BEGINS
t=linspace(0,1,22050)
freq=5%how many times it repeats in 1 sec
A = 1; % amplitude
T = 1/freq; % period of the signal

% square
square = mod(t * A / T, A) > A / 2;
plot(t, square)
title('Square');

% rectangle
l = 0.2; % percentage the signal spends on low value
rectangle = mod(t * A / T, A) > A * l;
figure;
plot(t, rectangle);
title('Rectangle');

% sawtooth
sawtooth = mod(t * A / T, A);
figure;
plot(t, sawtooth);
title('Sawtooth');

% triangle
triangle = (mod(t * A / T, A) > 0.5).*mod(t * A / T, A) + (mod(t * A / T, A) <= 0.5).*(1 - mod(t * A / T, A));
figure;
plot(t, triangle);
title('triangle');

感谢我正在使用 octave/matlab

【问题讨论】:

    标签: matlab octave


    【解决方案1】:
    function x_new = rescale(x, new_min, new_max)
    
    x_min = min(x);
    x_max = max(x);
    
    x_new = new_min + (new_max - new_min) * (x - x_min) / (x_max - x_min);
    

    (顺便说一句,这是非常基本的数学,可以很容易地用谷歌搜索)

    【讨论】:

      【解决方案2】:

      这是代码,以防它帮助下一个人

      clear all
      % SCRIPT BEGINS
      t=linspace(0,1,22050);
      freq=5; %how many in 1 sec
      %t = 0:0.01:1; %time vector
      A = 1; % amplitude
      T = 1/freq; % period of the signal
      
      vertoffset=0.5;
      % square
      square = mod(t * A / T, A) > A / 2;
      square = square - vertoffset;
      plot(t, square)
      title('Square');
      
      % rectangle
      l = 0.2; % percentage the signal spends on low value
      rectangle = mod(t * A / T, A) > A * l;
      rectangle = rectangle - vertoffset;
      figure;
      plot(t, rectangle);
      title('Rectangle');
      
      % sawtooth
      sawtooth = mod(t * A / T, A);
      sawtooth = sawtooth -vertoffset;
      figure;
      plot(t, sawtooth);
      title('Sawtooth');
      
      % triangle
      triangle = (mod(t * A / T, A) > 0.5).*mod(t * A / T, A) + (mod(t * A / T, A) <= 0.5).*(1 - mod(t * A / T, A));
      triangle = 2*triangle - 1.5;
      figure;
      plot(t, triangle);
      title('triangle');
      

      【讨论】:

        猜你喜欢
        • 2016-09-08
        • 1970-01-01
        • 1970-01-01
        • 2013-12-01
        • 2015-02-17
        • 2017-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多