Main Content

vco

Voltage-controlled oscillator

Description

y = vco(x,Fc,Fs) creates a signal that oscillates at a frequency determined by the real input vector or matrix x with sample rate Fs. If x is a matrix, vco produces a matrix whose columns oscillate according to the columns of x.

example

y = vco(x,[Fmin Fmax],Fs) scales the frequency modulation range so that ±1 values of x yield oscillations of Fmin Hz and Fmax Hz, respectively.

example

Examples

collapse all

Generate two seconds of a signal composed of a voltage-controlled oscillator (VCO) and four Gaussian atoms. The instantaneous frequency is modulated by a chirp function. The sample rate is 14 kHz.

fs = 14000;
t = (0:1/fs:2)';

gaussFun = @(A,x,mu,f) exp(-(x-mu).^2/(2*0.01^2)).*sin(2*pi*f.*x)*A';
s = gaussFun([1 1 1 1],t,[0.2 0.5 1 1.75],[10 60 25 5]*100)/10;
x = vco(chirp(t+.1,0,t(end),3).*exp(-2*(t-1).^2),0.2*fs,fs);

s = s/10 + x;

Plot the spectrogram of the generated signal. Specify 90% overlap and moderate spectral leakage.

pspectrum(s,fs,"spectrogram",OverlapPercent=90,Leakage=0.5)

Figure contains an axes object. The axes object with title Fres = 164.0842 Hz, Tres = 15.6429 ms, xlabel Time (s), ylabel Frequency (kHz) contains an object of type image.

Generate two seconds of a signal sampled at 10 kHz whose instantaneous frequency is a triangle function of time.

fs = 10000;
t = 0:1/fs:2;
x = vco(sawtooth(2*pi*t,0.75),[0.1 0.4]*fs,fs);

Plot the spectrogram of the generated signal. Specify the leakage as 0.80 and the overlap between adjoining segments as 95%.

pspectrum(x,fs,"spectrogram",Leakage=0.80,OverlapPercent=95)

Figure contains an axes object. The axes object with title Fres = 106.1965 Hz, Tres = 15.7 ms, xlabel Time (s), ylabel Frequency (kHz) contains an object of type image.

Input Arguments

collapse all

Input data, specified as a real vector or real matrix. x ranges from –1 to 1, where x = –1 corresponds to 0 frequency output, x = 0 corresponds to Fc, and x = 1 corresponds to 2*Fc.

Carrier or reference frequency used to modulate the input signal, specified as a real positive scalar.

Frequency modulation range limits, specified as a real vector. For best results, Fmin and Fmax should be in the range 0 to Fs/2.

Note

vco performs FM modulation using the modulate function.

Sample rate, specified as a positive scalar. The sample rate is the number of samples per unit time. If the unit of time is seconds, then the sample rate is in Hz.

  • If you specify Fs as empty [], then vco assumes that the input signal x has a sample rate of 1 Hz.

  • If you do not specify Fs, then vco assumes that the input signal x has a sample rate of 2π rad/sample.

Output Arguments

collapse all

Oscillating output signal, returned as a real vector or real matrix. y is the same size as x and has amplitude equal to 1.

Extended Capabilities

expand all

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

GPU Code Generation
Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.

Version History

Introduced before R2006a

expand all

See Also

|