We can use waves to model almost everything in the world from the thing we can see or touch to the things which we can’t.
Here, we try to model the waves itself.
Moving Waves
clear; close all; clc a=1; %amplitude f=5; %frequency T=1/f; %time period w=2*pi*f; %angular frequency lb=2*T; %wavelength k=2*pi/lb; %wavenumber x=0:pi/200:10*pi; t=0:0.01:2; %time figure(1) for i=1:length(t) y=a*sin(k*x-w*t(i)); %waveform plot(x,y) pause(0.1) end
Fourier Transform to analyse the amplitude spectrum
clear; close all; clc fs=1000; %sampling frequency t=0:1/fs:1.5-1/fs;%time f1=10; %frequency1 f2=20; %frequency2 f3=30; %frequency3 %x=5*sin(2*pi*10*t+3); x=1*sin(2*pi*f1*t+0.3)+2*sin(2*pi*f2*t+0.2)+3*sin(2*pi*f3*t+0.4); plot(t,x) figure(1) grid on xlabel('Time') ylabel('Amplitude') title('Plot of 2*sin(2*pi*f1*t+0.3)-3*sin(2*pi*f2*t+0.2)+5*cos(2*pi*f3*t+0.4)') X=fft(x); fre=fs/length(t); fre_hz=(0:length(t)/2-1)*fre; X_mag=abs(X); %X is complex figure(2) plot(fre_hz,X_mag(1:length(t)/2)) grid on axis([0 40 -inf inf]) xlabel('Frequency (in hz)') ylabel('Magnitude') title('Magnitude spectrum of 5*sin(2*pi*10*t+3)')
Hilbert Transform and get the envelope of the waveform
clear; close all; clc fs = 1e4; %sampling frequency t = 0:1/fs:1; %time f1=10; f2=20; f3=30; x=1*sin(2*pi*f1*t+0.3)+2*sin(2*pi*f2*t+0.2)+3*sin(2*pi*f3*t+0.4); %x=5*sin(2*pi*10*t+3); y = hilbert(x); figure(1) plot(t,real(y),t,imag(y)) % %xlim([0.01 0.03]) legend('real','imaginary') title('Hilbert Function') figure(2) env=abs(y); plot(t,x) xlabel('Time') title('Envelope') hold on plot(t,env) legend('original','envelope')
Application of Hilbert Transform: Edge Detection and comparison with the classical derivative method
clear; close all; clc x = 0:0.1:100; y = channel(x,[10 30 70]); %channel function to define a trapezoidal channel plot(x,y) figure(1) subplot(311) plot(x,y) grid on title('Channel') subplot(312) deriv =diff(y); %dervative of the channel plot(x(2:end),deriv) title('Detection by derivative method') grid on subplot(313) hil = hilbert(y); %hilbert transform of the channel env=abs(hil); plot(x,env) grid on title('Detection by hilbert transform')
- – Utpal Kumar, IES, Academia Sinica