e1094.m

来自「matlab算法集 matlab算法集」· M 代码 · 共 50 行

M
50
字号
%-----------------------------------------------------------------------
% Example 10.9.4: Helicopter Noise 
%-----------------------------------------------------------------------

% Initialize

   clc                          % clear screen
   clear                        % clear variables
   n     = 1024;		% number of samples 
   m     = 3;			% number of harmonics 
   fs    = 512;	                % sampling frequency (Hz) 
   T     = 1/fs;		% sampling interval (sec) 
   blade = 32;	                % blade passage frequency (Hz) 
   r     = 6;  	                % random noise magnitude 
   df    = fs/n;                % frequency precision
   t     = zeros (n,1);		% time 
   x     = zeros (n,1);		% noise  	
   A     = zeros (n,1);		% magnitude  
   phi   = zeros (n,1);		% phase  
   f     = zeros (n/2,1);	% frequency 
   a     = [3.2 2.1 1.3]';	% magnitudes 
   p     = [1.8 -0.7 2.1]';	% phase angles 	
		
% Generate noise    		
   
   fprintf ('Example 10.9.4: Helicopter Noise\n');
   t = [0 : 1/T : (n-1)/T]';
   x = randu (n,1,-r,r);
		
   for i = 1 : n
      for j = 1 : m
      	 b = j*2*pi*blade*(i-1)*T;
         x(i) = x(i) + a(j)*cos(b + p(j));
      end
   end
   graphxy (t,x,'Helicoptor Noise','t (sec)','x(t)')

% Convert from dB sound measurments to amplitude 

   for i = 1 : n
      x(i) =  10^(x(i)/20);
   end

% Compute spectrum 
   
   [A,phi,f] = spectra (x,fs);
   A(1) = 0;				         % remove average value 
   graphxy (f(1:n/2),A(1:n/2),'Magnitude Spectrum','f (Hz)','A')
%-----------------------------------------------------------------------

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?