Many changes in DBHandler

new general processing structure
just before splitting off the projects folder from this repo
This commit is contained in:
Silas Oettinghaus
2025-05-13 10:24:09 +02:00
parent 727c3d9364
commit 9ce23c4a10
38 changed files with 2440 additions and 1103 deletions

View File

@@ -28,39 +28,39 @@ end
[evm_total,evm_lvl] = calc_evm_(test_signal,reference_signal);
function [evm_total,evm_lvl] = calc_evm_(test_signal,reference_signal)
function [evm_total, evm_lvl] = calc_evm_(test_signal, reference_signal)
% Validate input
assert(length(test_signal) == length(reference_signal), "Sequence length does not match");
assert(length(test_signal) == length(reference_signal),"Sequence length does not match");
% Calculate error vector
error_vector = test_signal - reference_signal;
error_vector = (test_signal-reference_signal);
% EVM (RMS) as percentage, per MathWorks definition
evm_total = sqrt(sum(abs(error_vector).^2) / sum(abs(reference_signal).^2)) * 100;
%%% Overall EVM
evm_total = rms(error_vector);
try
%%% Per Level EVM
% Per-level EVM
k = unique(reference_signal);
evm_lvl = NaN(1, length(k));
for lvl = 1:length(k)
lvl_errors = error_vector(reference_signal==k(lvl));
evm_lvl(lvl) = rms(lvl_errors);
idx = reference_signal == k(lvl);
if any(idx)
lvl_errors = error_vector(idx);
lvl_refs = reference_signal(idx);
evm_lvl(lvl) = sqrt(sum(abs(lvl_errors).^2) / sum(abs(lvl_refs).^2)) * 100;
end
end
catch
evm_lvl = NaN;
warning('No EVM per level calculated')
end
end
function [data_,reference_]=trimseq(data,reference,skipstart,skip_end)
function [data_,reference_]=trimseq(data,reference,skipstart,skip_end)
data_ = data(skipstart+1:end-skip_end,:);
data_ = data(skipstart+1:end-skip_end,:);
delta_bits = length(reference) - length(data);
delta_bits = length(reference) - length(data);
skip_end = delta_bits + skip_end;
skip_end = delta_bits + skip_end;
reference_ = reference(skipstart+1:end-skip_end,:);
reference_ = reference(skipstart+1:end-skip_end,:);
end
end
end