Update 'autocorr.m'
This commit is contained in:
		
							
								
								
									
										114
									
								
								autocorr.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								autocorr.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,114 @@ | ||||
| %% This function was automatically generated. When modifying its signature, take care to apply | ||||
| %% modifications also to the descriptor files in the repository. | ||||
| %% function out = my_app(Time Series File, Number of lags , Number of standard deviations) | ||||
|  | ||||
| function [acf,lags,bounds,numLags,numMA,numSTD] = ... | ||||
|           autocorr(time_series,numLags,numMA,numSTD) | ||||
|  | ||||
| [rows,columns] = size(time_series); | ||||
|  | ||||
| if (rows ~= 1) && (columns ~= 1) | ||||
|      | ||||
|     error('Input file must be a vector'); | ||||
|        | ||||
| end | ||||
|  | ||||
| time_series = time_series(:);         % Ensure a column vector | ||||
| N = length(time_series);              % Sample size | ||||
| defaultLags = 20;                     % Recommendation of [1] | ||||
|  | ||||
| % Ensure numLags is a positive integer or set default: | ||||
|  | ||||
| if (nargin >= 2) && ~isempty(numLags) | ||||
|      | ||||
|    if numel(numLags) > 1 | ||||
|         | ||||
|       error('Number of lags must be a scalar value'); | ||||
|          | ||||
|    end | ||||
|     | ||||
|    if (round(numLags) ~= numLags) || (numLags <= 0) | ||||
|         | ||||
|       error('Number of lags must be a positive integer'); | ||||
|          | ||||
|    end | ||||
|     | ||||
|    if numLags > (N-1) | ||||
|         | ||||
|       error('Number of ACF lags must not exceed the number of observations minus one'); | ||||
|     % numLags = min(defaultLags,N-1) | ||||
|          | ||||
|    end | ||||
|     | ||||
| else | ||||
|      | ||||
|    numLags = min(defaultLags,N-1); % Default | ||||
|     | ||||
| end | ||||
|  | ||||
| % Ensure numMA is a nonnegative integer or set default: | ||||
|  | ||||
| if (nargin >= 3) && ~isempty(numMA) | ||||
|      | ||||
|    if numel(numMA) > 1 | ||||
|         | ||||
|       error('Number of moving average must be a scalar value'); | ||||
|          | ||||
|    end | ||||
|     | ||||
|    if (round(numMA) ~= numMA) || (numMA < 0) | ||||
|         | ||||
|       error('Number of moving average must be a positive integer'); | ||||
|          | ||||
|    end | ||||
|     | ||||
|    if numMA >= numLags | ||||
|         | ||||
|       error('Number of moving average must be lower than number of lags'); | ||||
|          | ||||
|    end | ||||
|     | ||||
| else | ||||
|      | ||||
|    numMA = 0; % Default | ||||
|     | ||||
| end | ||||
|  | ||||
| % Ensure numSTD is a positive scalar or set default: | ||||
|  | ||||
| if (nargin >= 4) && ~isempty(numSTD) | ||||
|      | ||||
|    if numel(numSTD) > 1 | ||||
|         | ||||
|       error('Number of standard deviations must be a scalar value'); | ||||
|          | ||||
|    end | ||||
|     | ||||
|    if numSTD < 0 | ||||
|         | ||||
|       error('Number of standard deviations cannot be negative'); | ||||
|          | ||||
|    end | ||||
|     | ||||
| else | ||||
|      | ||||
|    numSTD = 2; % Default | ||||
|     | ||||
| end | ||||
|  | ||||
| nFFT = 2^(nextpow2(length(time_series))+1); | ||||
| F = fft(time_series-mean(time_series),nFFT); | ||||
| F = F.*conj(F); | ||||
| acf = ifft(F); | ||||
| acf = acf(1:(numLags+1)); % Retain non-negative lags | ||||
| acf = acf./acf(1); % Normalize | ||||
| acf = real(acf); | ||||
|  | ||||
| % Compute approximate confidence bounds using the approach in [1], | ||||
| % equations 2.1.13 and 6.2.2, pp. 33 and 188, respectively: | ||||
|  | ||||
| sigmaNMA = sqrt((1+2*(acf(2:numMA+1)'*acf(2:numMA+1)))/N);   | ||||
| bounds = sigmaNMA*[numSTD;-numSTD]; | ||||
| lags = (0:numLags)'; | ||||
|       | ||||
| end | ||||
							
								
								
									
										8
									
								
								my_app.m
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								my_app.m
									
									
									
									
									
								
							| @@ -1,8 +0,0 @@ | ||||
| %% This function was automatically generated. When modifying its signature, take care to apply | ||||
| %% modifications also to the descriptor files in the repository. | ||||
| function out = my_app(Time Series File, Number of lags , Number of standard deviations) | ||||
|  | ||||
| %% AUTOCORRELATION_MOD | ||||
| %% TODO: Put your application code here | ||||
|  | ||||
| end | ||||
		Reference in New Issue
	
	Block a user