SciLabによるウェーバー方式SSBのシミュレーション

前回のPSNに対してこちらはウェーバー方式です。

function [y]=weaverssb(x)
// Weaver style SSB generator  for SciLab
// by Suikan. 2006

// create complex local oscillator. 1.5kHz assuming 48kSamples/sec
  [n,c]=size(x);
  lo = exp(%i*[1:c]*2*%pi*1.5/48)
  
// create 0..1.2kHz  LPF at 48kSamples/sec
// this filter is transposed.
  taps = 511;
  thn=eqfir( taps, [0 1.2/48; 1.5/48 0.5], [1 0], [0.01 1] )';

// down convert input data by -1.5kHz
  tmp1 = x .* conj(lo);

  y = [0 0];
// Do real LPF (complex BPF) by FIR filter
  for k=1:1:c-taps;
    y(1,k+taps) = tmp1(k:(k+taps-1)) * thn;
  end

// up convert by 1.5kHz
    y = y .* lo;

endfunction