function [fourier_coeff, sorted_values, x, y, meanValue, no_values] = load_1d_data(number) switch number case 1 load('data_1d_lwp.mat'); y = (lwp_4s(1:4:end) + lwp_4s(2:4:end) + lwp_4s(3:4:end) + lwp_4s(4:4:end)) / 4; x = (time_4s(1:4:end) + time_4s(2:4:end) + time_4s(3:4:end) + time_4s(4:4:end)) / 4; no_values = length(y); meanValue = mean(y); sorted_values = sort(y - meanValue); fourier_coeff = abs(ifft(y - meanValue))'; case 2 load('data_1d_lwp.mat'); % Careful, if you make a 2D matrix of this time series it may take some hours. y = lwp_4s; x = time_4s; no_values = length(y); meanValue = mean(y); sorted_values = sort(y - meanValue); fourier_coeff = abs(ifft(y - meanValue))'; case 3 % Take theoretical values for the Fourier coefficients % (corresponding to a -5/3 power spectrum) and the % amplitude distribution (an exponential distribution) no_values = 2^8; % Make vector with the amplitude distribution p = ((1:no_values)/no_values) - 1/(2*no_values); sorted_values = expinv(p,1); % The second number is the standard deviation meanValue = mean(sorted_values); sorted_values = sorted_values - meanValue; total_variance_pdf = std(sorted_values).^2; % Calculate the Fourier coefficients. k = [1:no_values/2 no_values/2-1:-1:1] pc = k.^(-5/3); % This makes a linear power spectrum with slope -5/3 total_variance_spec = sum(pc); pc = pc * total_variance_pdf / total_variance_spec; total_variance_spec = sum(pc); fourier_coeff = zeros(1,no_values); fourier_coeff(1) = 0; fourier_coeff(2:no_values) = sqrt(pc); % As the statistics are theoretical, there is no template data. x = 1:no_values; y = 0; otherwise % Take theoretical values for the Fourier coefficients % (corresponding to a -5/3 power spectrum) and the % amplitude distribution (a Gaussian distribution with discrete values) % This could, e.g. be used for as a cloud top height in a numerical % cloud model, with relatively good scaling behaviour. no_values = 2^9; step_size = 10; % the step with which the amplitude distributions are discretized % Make vector with the amplitude distribution % First make Gaussian distribution sorted_values = zeros(no_values, 1); p = ((1:no_values)/no_values) - 1/(2*no_values); sorted_values(:,1) = norminv(p, 0, 25)'; % The second number is the mean, the third the standard deviation % Then discretize it with with steps of step_size sorted_values(:,1) = round(sorted_values(:,1) / step_size); sorted_values(:,1) = sorted_values(:,1) * step_size; % Remove mean and calculate variance for scaling Fourier spectrum. meanValue = mean(sorted_values(:,1)); sorted_values(:,1) = sorted_values(:,1) - meanValue; total_variance_pdf = std(sorted_values(:,1)).^2; % Calculate the Fourier coefficients. k = [1:no_values/2 no_values/2-1:-1:1]; pc = k.^(-5/3); % This makes a linear power spectrum with slope -5/3 total_variance_spec = sum(pc); fourier_coeff = zeros(1, no_values); fourier_coeff(1, 1) = 0; fourier_coeff(1, 2:no_values) = sqrt(pc * total_variance_pdf / total_variance_spec); % As the statistics are theoretical, there is no template data. x = 1:no_values; y = 0; end