duration = 60 / speed_rpm;
sampling_rate_high = 1668;
t_high = linspace(0, duration, duration * sampling_rate_high);
signal_high = sin(2 * pi * frequency * t_high);
average_signal_high = mean(signal_high);
step = floor(length(signal_high) / num_samples_low);
selected_indices = 1:step:length(signal_high);
selected_values = signal_high(selected_indices);
average_selected_values = mean(selected_values);
normalized_selected_values = selected_values - (average_selected_values - average_signal_high);
t_low = linspace(0, duration, num_samples_low);
normalized_selected_values_interp = interp1(linspace(0, duration, length(normalized_selected_values)), normalized_selected_values, t_low, 'linear', 'extrap');
signal_low = normalized_selected_values_interp;
coefficients_high = cwt(signal_high, scales, 'db4');
coefficients_low = cwt(signal_low, scales, 'db4');
energy_ratio = zeros(1, length(scales));
energy_ratio(i) = sum(abs(coefficients_low(i, :)).^2) / sum(abs(coefficients_high(i, :)).^2);
plot(t_high, signal_high, 'b');
title('Original Signal (High Sampling Rate)');
stem(selected_indices, selected_values, 'r', 'Marker', 'o');
plot(t_low, signal_low, 'b');
title('Signal Low Sampling Rate');
legend('Selected Values', 'Interpolated Signal');
imagesc(t_high, scales, abs(coefficients_high));
title('Wavelet Transform (High Sampling Rate)');
imagesc(t_low, scales, abs(coefficients_low));
title('Wavelet Transform (Low Sampling Rate)');
plot(scales, energy_ratio, 'LineWidth', 1.5);
title('Wavelet Energy Ratio');
disp(['Average Wavelet Energy Ratio: ', num2str(mean(energy_ratio))]);