halfway merged and pulled?!
This commit is contained in:
62
Functions/convert_freq_lambda.m
Normal file
62
Functions/convert_freq_lambda.m
Normal file
@@ -0,0 +1,62 @@
|
||||
%% ============================================================
|
||||
% Wavelength–Frequency Conversion Utilities
|
||||
% ============================================================
|
||||
|
||||
% Example usage:
|
||||
% f = lambda2freq(1310e-9); % 1310 nm -> Hz
|
||||
% lambda = freq2lambda(224e12); % 224 THz -> m
|
||||
% delta_lambda_nm = df2dlambda(224e12, 400e9); % 400 GHz @ 224 THz -> nm
|
||||
% delta_freq_GHz = dlambda2df(1310e-9, 3.45); % 3.45 nm @ 1310 nm -> GHz
|
||||
|
||||
%% ---- Core conversion functions ----
|
||||
function f = lambda2freq(lambda)
|
||||
% lambda2freq Convert wavelength [m] → frequency [Hz]
|
||||
c = physconst('lightspeed');
|
||||
f = c ./ lambda;
|
||||
end
|
||||
|
||||
function lambda = freq2lambda(f)
|
||||
% freq2lambda Convert frequency [Hz] → wavelength [m]
|
||||
c = physconst('lightspeed');
|
||||
lambda = c ./ f;
|
||||
end
|
||||
|
||||
%% ---- Differential conversions ----
|
||||
function d_lambda = df2dlambda(f_center, d_f)
|
||||
% df2dlambda Convert frequency spacing Δf [Hz] → wavelength spacing Δλ [m]
|
||||
% around a given center frequency f_center [Hz].
|
||||
% Uses first-order differential: Δλ ≈ (c / f^2) * Δf
|
||||
|
||||
c = physconst('lightspeed');
|
||||
d_lambda = (c ./ (f_center.^2)) .* d_f;
|
||||
end
|
||||
|
||||
function d_f = dlambda2df(lambda_center, d_lambda)
|
||||
% dlambda2df Convert wavelength spacing Δλ [m] → frequency spacing Δf [Hz]
|
||||
% around a given center wavelength λ_center [m].
|
||||
% Uses first-order differential: Δf ≈ (c / λ^2) * Δλ
|
||||
|
||||
c = physconst('lightspeed');
|
||||
d_f = (c ./ (lambda_center.^2)) .* d_lambda;
|
||||
end
|
||||
|
||||
%% ============================================================
|
||||
% Example section (can be commented out)
|
||||
% ============================================================
|
||||
|
||||
if ~isdeployed
|
||||
fprintf('--- Example conversions ---\n');
|
||||
|
||||
lambda_nm = 1310; % nm
|
||||
lambda = lambda_nm * 1e-9; % m
|
||||
f = lambda2freq(lambda); % Hz
|
||||
fprintf('λ = %.1f nm → f = %.3f THz\n', lambda_nm, f/1e12);
|
||||
|
||||
d_f = 2000e9; % 400 GHz spacing
|
||||
d_lambda = df2dlambda(f, d_f); % [m]
|
||||
fprintf('Δf = %.0f GHz @ %.1f nm → Δλ = %.3f nm\n', d_f/1e9, lambda_nm, d_lambda*1e9);
|
||||
|
||||
% Verify reverse direction
|
||||
d_f_back = dlambda2df(lambda, d_lambda);
|
||||
fprintf('Δλ = %.3f nm @ %.1f nm → Δf = %.0f GHz\n', d_lambda*1e9, lambda_nm, d_f_back/1e9);
|
||||
end
|
||||
Reference in New Issue
Block a user