poster
2019-11-25, 00:00
<p>I am new in python and trying to convert the following code from Matlab to python (I have problem with the class definition here) </p>
<p>in matlab:</p>
<pre class="lang-matlab prettyprint-override"><code>classdef TGrid < handle
properties
% properties common for all grids
NzEarth % number of Earth layers
Nza % number of air layers
end
methods
%set airLayers for the grid
function obj = setAirLayers(obj,varargin)
Method = 'fixed height'; % OPTIONS: mirror, Fixed Height, Read From File
MaxHeight = 10^6 ; % Fixed height of top
nzAir = 15 ; % number of layers
InputFile = [];
n = length(varargin);
if mod(n,2)
error('Arguments must occur in pairs')
end
for k = 1:2:n
option = lower(varargin{k});
switch option
case 'method'
Method = lower(varargin{k+1});
nzAir = 10;
case 'maxheight'
MaxHeight = varargin{k+1};
case 'nlayers'
nzAir = varargin{k+1};
case 'inputfile'
InputFile = varargin{k+1};
end
end
switch Method
case 'mirror'
dzAir = obj.Dz(obj.Nza+1:obj.Nza+nzAir).*(3.^(0:nzAir-1))';
case 'fixed height'
z1_log = log10(obj.Dz(1));
dlogz = (log10(MaxHeight)-z1_log)/(nzAir);
z = 10.^(z1_log:dlogz:log10(MaxHeight));
dzAir = diff(z);
case 'read from file'
fid = fopen(InputFile);
[dzAir,nzAir] = fscanf(fid,'%f','inf');
end
[n,~] = size(dzAir);
if n == 1
dzAir = dzAir.';
end
obj.Nza = nzAir;
obj.Dz = [dzAir(end:-1:1) ; obj.Dz];
obj.Nz = length(obj.Dz);
obj.dualLengths;
obj.setIndices;
end % setAirLayers
end % methods
end % classdef
</code></pre>
More... (https://stackoverflow.com/questions/59008819/convert-class-form-matlab-to-python)
<p>in matlab:</p>
<pre class="lang-matlab prettyprint-override"><code>classdef TGrid < handle
properties
% properties common for all grids
NzEarth % number of Earth layers
Nza % number of air layers
end
methods
%set airLayers for the grid
function obj = setAirLayers(obj,varargin)
Method = 'fixed height'; % OPTIONS: mirror, Fixed Height, Read From File
MaxHeight = 10^6 ; % Fixed height of top
nzAir = 15 ; % number of layers
InputFile = [];
n = length(varargin);
if mod(n,2)
error('Arguments must occur in pairs')
end
for k = 1:2:n
option = lower(varargin{k});
switch option
case 'method'
Method = lower(varargin{k+1});
nzAir = 10;
case 'maxheight'
MaxHeight = varargin{k+1};
case 'nlayers'
nzAir = varargin{k+1};
case 'inputfile'
InputFile = varargin{k+1};
end
end
switch Method
case 'mirror'
dzAir = obj.Dz(obj.Nza+1:obj.Nza+nzAir).*(3.^(0:nzAir-1))';
case 'fixed height'
z1_log = log10(obj.Dz(1));
dlogz = (log10(MaxHeight)-z1_log)/(nzAir);
z = 10.^(z1_log:dlogz:log10(MaxHeight));
dzAir = diff(z);
case 'read from file'
fid = fopen(InputFile);
[dzAir,nzAir] = fscanf(fid,'%f','inf');
end
[n,~] = size(dzAir);
if n == 1
dzAir = dzAir.';
end
obj.Nza = nzAir;
obj.Dz = [dzAir(end:-1:1) ; obj.Dz];
obj.Nz = length(obj.Dz);
obj.dualLengths;
obj.setIndices;
end % setAirLayers
end % methods
end % classdef
</code></pre>
More... (https://stackoverflow.com/questions/59008819/convert-class-form-matlab-to-python)