Skip to content

Commit 59a2fd0

Browse files
joallen6cwhanse
joallen6
authored andcommitted
Allow NaN elements in input arrays. (#2)
1 parent 0d96587 commit 59a2fd0

9 files changed

+52
-64
lines changed

pvl_absoluteairmass.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232
% See also PVL_RELATIVEAIRMASS
3333

3434
p=inputParser;
35-
p.addRequired('AMrelative', @(x) all(isnumeric(x) | isnan(x)));
36-
p.addRequired('pressure', @(x) all(isnumeric(x) & x>=0));
35+
p.addRequired('AMrelative', @(x) isnumeric(x));
36+
p.addRequired('pressure', @(x) isnumeric(x) & all(x>=0 | isnan(x)));
3737
p.parse(AMrelative,pressure);
3838

3939
AMa = AMrelative.*pressure/101325;

pvl_calcparams_desoto.m

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -128,14 +128,14 @@
128128
% Source = Reference 4
129129

130130
p = inputParser;
131-
p.addRequired('S',@(x) all(x>=0) & isnumeric(x) & isvector(x) );
132-
p.addRequired('Tcell',@(x) all(x>=-273.15) & isnumeric(x) & isvector(x) );
133-
p.addRequired('alpha_isc', @(x) (isnumeric(x)));
134-
p.addRequired('ModuleParameters', @(x) (isstruct(x)));
135-
p.addRequired('EgRef', @(x) (isnumeric(x) & all(x>0)));
136-
p.addRequired('dEgdT', @(x) (isnumeric(x)));
137-
p.addOptional('Sref',1000, @(x) (all(x>0)& isnumeric(x)));
138-
p.addOptional('Tref',25, @(x) (all(x>-273.15) & isnumeric(x)));
131+
p.addRequired('S',@(x) isnumeric(x) && isvector(x) && all(x>=0 | isnan(x)));
132+
p.addRequired('Tcell',@(x) isnumeric(x) && isvector(x) && all(x>=-273.15 | isnan(x)));
133+
p.addRequired('alpha_isc', @(x) isnumeric(x) && isvector(x));
134+
p.addRequired('ModuleParameters', @(x) isstruct(x));
135+
p.addRequired('EgRef', @(x) isnumeric(x) && isvector(x) && all(x>0 | isnan(x)));
136+
p.addRequired('dEgdT', @(x) isnumeric(x) && isvector(x));
137+
p.addOptional('Sref',1000, @(x) isnumeric(x) && isvector(x) && (all(x>0 | isnan(x))));
138+
p.addOptional('Tref',25, @(x) isnumeric(x) && isvector(x) && (all(x>-273.15 | isnan(x))));
139139
p.parse(S, Tcell, alpha_isc, ModuleParameters, EgRef, dEgdT, varargin{:});
140140

141141
S = p.Results.S(:);

pvl_grounddiffuse.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@
3838

3939

4040
p = inputParser;
41-
p.addRequired('GHI',@(x) all(isnumeric(x) & isvector(x) & x>=0));
42-
p.addRequired('Albedo', @(x) all(isnumeric(x) & isvector(x) & x>=0 & x<=1));
43-
p.addRequired('SurfTilt', @(x) all(isvector(x) & isnumeric(x)));
41+
p.addRequired('GHI',@(x) isnumeric(x) && isvector(x) && all(x>=0 | isnan(x)));
42+
p.addRequired('Albedo', @(x) isnumeric(x) && isvector(x) && all((x>=0 & x<=1) | isnan(x)));
43+
p.addRequired('SurfTilt', @(x) isnumeric(x) && isvector(x));
4444
p.parse(GHI,Albedo,SurfTilt);
4545

4646
GHI = GHI(:);

pvl_isotropicsky.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@
4444
%
4545

4646
p = inputParser;
47-
p.addRequired('SurfTilt', @(x) all(isnumeric(x) & x<=180 & x>=0 & isvector(x)));
48-
p.addRequired('DHI', @(x) all(isnumeric(x) & isvector(x) & x>=0));
47+
p.addRequired('SurfTilt', @(x) isnumeric(x) && isvector(x) && all((x>=0 & x<=180) | isnan(x)));
48+
p.addRequired('DHI', @(x) isnumeric(x) && isvector(x) && all(x>=0 | isnan(x)));
4949
p.parse(SurfTilt, DHI);
5050

5151
SkyDiffuse = DHI *(1+ cosd(SurfTilt)) * 0.5;

pvl_perez.m

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,14 +85,14 @@
8585
%
8686

8787
p=inputParser;
88-
p.addRequired('SurfTilt', @(x) (isnumeric(x) && all(x<=180) && all(x>=0) && isvector(x)));
89-
p.addRequired('SurfAz', @(x) isnumeric(x) && all(x<=360) && all(x>=0) && isvector(x));
90-
p.addRequired('DHI', @(x) (isnumeric(x) && isvector(x) && all((x>=0) | isnan(x))));
91-
p.addRequired('DNI', @(x) isnumeric(x) && isvector(x) && all((x>=0) | isnan(x)));
92-
p.addRequired('HExtra', @(x) isnumeric(x) && isvector(x) && all((x>=0) | isnan(x)));
93-
p.addRequired('SunZen', @(x) isnumeric(x) && all(x<=180) && all((x>=0) | isnan(x)) && isvector(x));
94-
p.addRequired('SunAz', @(x) (isnumeric(x) && all(x<=360) && all((x>=0) | isnan(x)) && isvector(x)));
95-
p.addRequired('AM', @(x) (all(((isnumeric(x) & x>=0) | isnan(x))) & isvector(x)));
88+
p.addRequired('SurfTilt', @(x) isnumeric(x) && isvector(x) && all((x>=0 & x<=180) | isnan(x)));
89+
p.addRequired('SurfAz', @(x) isnumeric(x) && isvector(x) && all((x>=0 & x<=360) | isnan(x)));
90+
p.addRequired('DHI', @(x) isnumeric(x) && isvector(x) && all(x>=0 | isnan(x)));
91+
p.addRequired('DNI', @(x) isnumeric(x) && isvector(x) && all(x>=0 | isnan(x)));
92+
p.addRequired('HExtra', @(x) isnumeric(x) && isvector(x) && all(x>=0 | isnan(x)));
93+
p.addRequired('SunZen', @(x) isnumeric(x) && isvector(x) && all((x>=0 & x<=180) | isnan(x)));
94+
p.addRequired('SunAz', @(x) isnumeric(x) && isvector(x) && all((x>=0 & x<=360) | isnan(x)));
95+
p.addRequired('AM', @(x) isnumeric(x) && isvector(x) && all(x>=0 | isnan(x)));
9696
p.addOptional('model', '1990', @(x) ischar(x));
9797
p.parse(SurfTilt, SurfAz, DHI, DNI, HExtra, SunZen, SunAz, AM, varargin{:});
9898

pvl_sapmcelltemp.m

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
function [Tcell Tmodule] = pvl_sapmcelltemp(E, E0, a, b, windspeed, Tamb, deltaT)
1+
function [Tcell, Tmodule] = pvl_sapmcelltemp(E, E0, a, b, windspeed, Tamb, deltaT)
22
% PVL_SAPMCELLTEMP Estimate cell temperature from irradiance, windspeed, ambient temperature, and module parameters (SAPM)
33
%
44
% Syntax
@@ -41,33 +41,21 @@
4141
% See also PVL_SAPM
4242
%
4343
p = inputParser;
44-
p.addRequired('E', @(x) all(isnumeric(x) & (x >= 0) & isvector(x)));
45-
p.addRequired('E0', @(x) all(isnumeric(x) & isscalar(x) & (x >= 0)));
46-
p.addRequired('a', @(x) all(isscalar(x) & isnumeric(x)));
47-
p.addRequired('b', @(x) all(isscalar(x) & isnumeric(x)));
48-
p.addRequired('windspeed', @(x) all(isvector(x) & isnumeric(x)));
49-
p.addRequired('Tamb', @(x) all(isnumeric(x) & (x >= -273.15) & isvector(x)));
50-
p.addRequired('deltaT', @(x) all(isnumeric(x) & (x >= 0) & isscalar(x)));
44+
p.addRequired('E', @(x) isnumeric(x) && isvector(x) && all(x>=0 | isnan(x)));
45+
p.addRequired('E0', @(x) isnumeric(x) && isscalar(x) && all(x>=0 | isnan(x)));
46+
p.addRequired('a', @(x) isnumeric(x) && isscalar(x));
47+
p.addRequired('b', @(x) isnumeric(x) && isscalar(x));
48+
p.addRequired('windspeed', @(x) isnumeric(x) && isvector(x));
49+
p.addRequired('Tamb', @(x) isnumeric(x) && isvector(x) && all(x >= -273.15 | isnan(x)));
50+
p.addRequired('deltaT', @(x) isnumeric(x) && isscalar(x) && all(x>=0 | isnan(x)));
5151
p.parse(E, E0, a, b, windspeed, Tamb, deltaT)
5252

53-
E = E(:);
54-
55-
if isscalar(p.Results.windspeed)
56-
windspeed = p.Results.windspeed*ones(size(E));
57-
else
58-
windspeed = p.Results.windspeed(:);
59-
end
60-
61-
if isscalar(p.Results.Tamb)
62-
Tamb = p.Results.Tamb*ones(size(E));
63-
else
64-
Tamb = p.Results.Tamb(:);
53+
if ~(isscalar(windspeed) || numel(windspeed) == numel(E))
54+
error('Input windspeed must be scalar or vectors of same length as E.');
6555
end
66-
67-
if (numel(E) ~= numel(windspeed)) || (numel(E) ~= numel(Tamb)) || (numel(E) ~= numel(windspeed))
68-
error(['Error in pvl_kingcelltemp. Inputs E, Tamb, and windspeed must '...
69-
'be scalars or vectors of same length.']);
56+
if ~(isscalar(Tamb) || numel(Tamb) == numel(E))
57+
error('Input Tamb must be scalar or vectors of same length as E.');
7058
end
7159

7260
Tmodule = E.*(exp(a+b.*windspeed))+Tamb;
73-
Tcell = Tmodule + E./E0.*deltaT;
61+
Tcell = Tmodule + E./E0.*deltaT;

pvl_singleaxis.m

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,14 @@
8080
%
8181
%
8282
p = inputParser;
83-
p.addRequired('SunZen', @(x) all(isnumeric(x) & x>=0 & x<=180) & isvector(x));
84-
p.addRequired('SunAz', @(x) all(isnumeric(x) & x>=0 & x<=360) & isvector(x));
85-
p.addRequired('Latitude', @(x) (isnumeric(x) & isscalar(x)));
86-
p.addRequired('AxisTilt', @(x) (isnumeric(x) & isscalar(x) & x>=0 & x<=90));
87-
p.addRequired('AxisAzimuth', @(x) (isnumeric(x) & isscalar(x) & x>=0 & x<=360));
88-
p.addRequired('MaxAngle', @(x) (isnumeric(x) & isscalar(x) & x<=180 & x>=0));
89-
p.addOptional('BackTrack', 0, @(x) (isscalar(x)));
90-
p.addOptional('GCR',1/3.5, @(x) (isnumeric(x) & isscalar(x) & x<=1));
83+
p.addRequired('SunZen', @(x) isnumeric(x) && isvector(x) && all((x>=0 & x<=180) | isnan(x)));
84+
p.addRequired('SunAz', @(x) isnumeric(x) && isvector(x) && all((x>=0 & x<=360) | isnan(x)));
85+
p.addRequired('Latitude', @(x) isnumeric(x) && isscalar(x));
86+
p.addRequired('AxisTilt', @(x) isnumeric(x) && isscalar(x) && x>=0 && x<=90);
87+
p.addRequired('AxisAzimuth', @(x) isnumeric(x) && isscalar(x) && x>=0 && x<=360);
88+
p.addRequired('MaxAngle', @(x) isnumeric(x) && isscalar(x) && x>=0 && x<=180);
89+
p.addOptional('BackTrack', 0, @(x) isscalar(x));
90+
p.addOptional('GCR',1/3.5, @(x) isnumeric(x) & isscalar(x) & x<=1);
9191
p.parse(SunZen, SunAz, Latitude, AxisTilt, AxisAzimuth, MaxAngle, varargin{:})
9292

9393
if Latitude<0

pvl_singlediode.m

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,12 @@
9494
% nNsVth is n*Ns*Vth
9595

9696
p = inputParser;
97-
p.addRequired('IL',@(x) all(x>=0) & isnumeric(x) & isvector(x) );
98-
p.addRequired('I0', @(x) all(x>=0) & isnumeric(x) & isvector(x));
99-
p.addRequired('Rs', @(x) all(x>=0) & isnumeric(x) & isvector(x));
100-
p.addRequired('Rsh', @(x) all(x>=0) & isnumeric(x) & isvector(x));
101-
p.addRequired('nNsVth',@(x) all(x>=0) & isnumeric(x) & isvector(x) );
102-
p.addOptional('NumPoints', 0, @(x) isfinite(x) & isscalar(x));
97+
p.addRequired('IL',@(x) isnumeric(x) && isvector(x) && all(x>=0 | isnan(x)));
98+
p.addRequired('I0', @(x) isnumeric(x) && isvector(x) && all(x>=0 | isnan(x)));
99+
p.addRequired('Rs', @(x) isnumeric(x) && isvector(x) && all(x>=0 | isnan(x)));
100+
p.addRequired('Rsh', @(x) isnumeric(x) && isvector(x) && all(x>=0 | isnan(x)));
101+
p.addRequired('nNsVth',@(x) isnumeric(x) && isvector(x) && all(x>=0 | isnan(x)));
102+
p.addOptional('NumPoints', 0, @(x) isfinite(x) && isscalar(x));
103103
p.parse(IL, I0, Rs, Rsh, nNsVth, varargin{:});
104104

105105
% Make all inputs into column vectors

pvl_snlinverter.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@
6868

6969
p = inputParser;
7070
p.addRequired('Inverter',@(x) isstruct(x))
71-
p.addRequired('Vdc', @(x) all(isnumeric(x) & x>=0 & isvector(x)));
72-
p.addRequired('Pdc', @(x) all(isnumeric(x) & x>=0 & isvector(x)));
71+
p.addRequired('Vdc', @(x) isnumeric(x) && isvector(x) && all(x>=0 | isnan(x)));
72+
p.addRequired('Pdc', @(x) isnumeric(x) && isvector(x) && all(x>=0 | isnan(x)));
7373
p.parse(Inverter, Vdc, Pdc);
7474

7575
Pac0 = p.Results.Inverter.Pac0;

0 commit comments

Comments
 (0)