Initial Commit.

This commit is contained in:
2025-07-29 21:45:44 +09:00
parent a69350b86e
commit 90231d49ae
38 changed files with 2051 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
function [total_nf, total_gain, total_temp] = cal_nf(nf_set, gain_set, reftemp)
% Check inputs
narginchk(2,3);
% Validate
validateattributes(nf_set,{'double'}, {'nonnan','nonempty','real', ...
'vector','nonnegative'}, 'noisefigure', 'NF');
numNF = numel(nf_set);
validateattributes(gain_set,{'double'}, {'nonnan','nonempty','real', ...
'vector','numel',numNF}, 'noisefigure', 'G');
NFcol = db2pow(nf_set(:));
Gcol = db2pow(gain_set(:));
% Check for temperature input
if nargin < 3
reftemp = 290; % Standard noise temperature (Kelvin)
else
validateattributes(reftemp,{'double'}, {'finite','nonempty','real', ...
'nonnegative','scalar'}, 'noisefigure', 'REFTEMP');
end
% Calculate total gain
total_gain = sum(gain_set(:),1); % dB
% Calculate cascaded noise figure
if numel(NFcol) > 1
cnfLinear = NFcol(1) + sum((NFcol(2:end) - 1)./cumprod(Gcol(1:end-1),1),1); % Linear
total_nf = 10*log10(cnfLinear); % dB
else
cnfLinear = NFcol(1);
total_nf = nf(1);
end
% Calculate cascaded noise temperature
total_temp = reftemp*(cnfLinear); % Kelvin
end