MATLAB Answers

How to get equation of signal in matlab

51 views (last 30 days)
Muhammad Usman  Saleem
Muhammad Usman Saleem on 15 Jul 2017
Commented: Star Strider on 24 Jul 2017
I want to find equation of this signal.
I plot this time series data and filter it with sSgolay filter. Now I want to get equation of this signal. Is this possible in matlab??
I have attached data of this plot with this post

  4 Comments

Show 1 older comment
Greg Heath
Greg Heath on 18 Jul 2017
You can get an equation for a neural network that models the I/O relationship.
HOWEVER, I don't see what good it will do
Greg
Muhammad Usman  Saleem
Muhammad Usman Saleem on 20 Jul 2017
@Grej Thanks for your reply. I have not expertise in neural network. So I not know whether this network has created for such meteorological problems. In matlab I know there are some models like AR, ARMA which simulate the data set then forecast it. I tried them alot but unable to fit them due to lacking in expertise.
How can I forecast snow for one day ahead using this time series data set?
Thanks
Greg Heath
Greg Heath on 20 Jul 2017
help NARNET
doc NARNET
help NNCORR
doc NNCORR
greg NARNET
Hope this helps.
Greg

Sign in to comment.

Answers (1)

Star Strider
Star Strider on 15 Jul 2017
I am not certain what you intend by getting an equation for it.
You can filter out the noise to see the general trend:
fidi = fopen('data.txt','rt');
D = textscan(fidi, '%s%f', 'Delimiter','\t', 'CollectOutput',1);
t = datenum(D{1});
s = D{2};
Ts = mean(diff(t)); % Sampling Interval
Fs = 1/Ts; % Sampling Frequency
Fn = Fs/2; % Nyquist Frequency
L = numel(t); % Signal Length
sm = s-mean(s); % Subtract Mean To Make Amplitudes At Frequencies>0 More Prominent
FTs = fft(sm)/L; % Fourier Transform
Fv = linspace(0, 1, fix(L/2)+1)*Fn; % Frequency Vector
Iv = 1:length(Fv); % Index Vector
Phs = angle(FTs);
figure(1)
plot(Fv, abs(FTs(Iv))*2)
grid
xlabel('Frequency (Days^{-1})')
ylabel('Amplitude')
set(gca, 'XLim',[0 0.05])
Wp = [0.0045]/Fn; % Passband Frequencies (Normalised)
Ws = [0.0055]/Fn; % Stopband Frequencies (Normalised)
Rp = 10; % Passband Ripple (dB)
Rs = 50; % Stopband Ripple (dB)
[n,Ws] = cheb2ord(Wp,Ws,Rp,Rs); % Filter Order
[z,p,k] = cheby2(n,Rs,Ws); % Filter Design
[sosbp,gbp] = zp2sos(z,p,k); % Convert To Second-Order-Section For Stability
figure(2)
freqz(sosbp, 2^16, Fs) % Filter Bode Plot
s_filt = filtfilt(sosbp,gbp, s); % Filter Signal
figure(3)
plot(t, s, '-b')
hold on
plot(t, s_filt, '-r', 'LineWidth',1.5)
hold off
xlabel('Time (Days)')
ylabel('Amplitude')
legend('Original', 'Lowpass Filtered')

  8 Comments

Show 5 older comments
Star Strider
Star Strider on 20 Jul 2017
@Muhammad Usman Saleem —
The point of my comment is that the neural network did not work.
I encourage you either to thoroughly study meteorological models and their complexity, or to abandon this idea and consider a more tractable problem.
Star Strider
Star Strider on 24 Jul 2017
As always, my pleasure!
If my Answer helped solve your problem, please Accept it.

Sign in to comment.

Sign in to answer this question.