www.gusucode.com > signal 案例源码程序 matlab代码 > signal/OccupiedBandwidthOfSinusoidsExample.m

    %% Occupied Bandwidth of Sinusoids
% Generate 1024 samples of a 100.123 kHz sinusoid sampled at 1024 kHz. Add
% white Gaussian noise such that the signal-to-noise ratio is 40 dB. Reset
% the random number generator for reproducible results.

% Copyright 2015 The MathWorks, Inc.


nSamp = 1024;
Fs = 1024e3;
SNR = 40;
rng default

t = (0:nSamp-1)'/Fs;

x = sin(2*pi*t*100.123e3);
x = x + randn(size(x))*std(x)/db2mag(SNR);

%%
% Use the |periodogram| function to compute the power spectral density
% (PSD) of the signal. Specify a Kaiser window with the same length as the
% signal and a shape factor of 38. Estimate the occupied bandwidth of the
% signal and annotate it on a plot of the PSD.

[Pxx,f] = periodogram(x,kaiser(nSamp,38),[],Fs);

obw(Pxx,f);

%%
% Generate another sinusoid, this one with a frequency of 257.321 kHz and
% an amplitude that is twice that of the first sinusoid. Add white Gaussian
% noise.

x2 = 2*sin(2*pi*t*257.321e3);
x2 = x2 + randn(size(x2))*std(x2)/db2mag(SNR);

%%
% Concatenate the sinusoids to produce a two-channel signal. Estimate the
% PSD of each channel and use the result to determine the occupied
% bandwidth.

[Pyy,f] = periodogram([x x2],kaiser(nSamp,38),[],Fs);

y = obw(Pyy,f)

%%
% Annotate the occupied bandwidths of the two channels on a plot of the
% PSDs.

obw(Pyy,f);

%%
% Add the two channels to form a new signal. Estimate the PSD and annotate
% the occupied bandwidth.

[Pzz,f] = periodogram(x+x2,kaiser(nSamp,38),[],Fs);

obw(Pzz,f);