Thanks Ernesto
Meanwhile I also managed to fix the problem with "get esfit fit1" (with 4 or more hyperfines not being imported).
The section from line 528 until "function [vary]=getvarys(~,varypars,t)" needs to be replaced by the following lines to fix the problem:
Code: Select all
function syslst_new = getsysstructs(~,syslst,sys_strct,sys_params)
syslst_new=syslst;
for i=1:numel(sys_params)
for j=1:numel(syslst)
syslstf=strsplit(syslst{j},'=');
switch syslstf{1}
case sys_params{i}
if contains(sys_params{i},'function')==1 || contains(sys_params{i},'method')==1 || contains(sys_params{i},'Nucs')==1
syslst_new{j}=[sys_params{i},'=',sys_strct.(sys_params{i})];
else
sys_vals{1}=sys_params{i};
sys_val=sys_strct.(sys_params{i});
if length(sys_val(1,:))==1 && length(sys_val(:,1))==1
sys_vals{2}=num2str(sys_val(1));
elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==1
sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),']'];
elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==2
sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),']'];
elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==2
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),';',num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),']'];
elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==1
sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),']'];
elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==3
sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),';',num2str(sys_val(3)),']'];
elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==2
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),']'];
elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==3
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),'; ',num2str(sys_val(2,1)),' ',...
num2str(sys_val(2,2)),'; ',num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),']'];
elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==3
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),']'];
%%%%
%%%% The following lines were added to enable "get esfit, fit1" for up to 10 nuclei
Code: Select all
elseif length(sys_val(1,:))==4 && length(sys_val(:,1))==1
sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),' ',num2str(sys_val(4)),']'];
elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==4
sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),';',num2str(sys_val(3)),';',num2str(sys_val(4)),']'];
elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==4
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),';',...
num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),';',...
num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),']'];
elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==4
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),';',...
num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),' ',num2str(sys_val(4,3)),']'];
elseif length(sys_val(1,:))==5 && length(sys_val(:,1))==1
sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),' ',num2str(sys_val(4)),' ',num2str(sys_val(5)),']'];
elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==5
sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),';',num2str(sys_val(3)),';',num2str(sys_val(4)),';',num2str(sys_val(5)),']'];
elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==5
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),';',...
num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),';',...
num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),';',...
num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),']'];
elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==5
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),';',...
num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),' ',num2str(sys_val(4,3)),';',...
num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),' ',num2str(sys_val(5,3)),']'];
elseif length(sys_val(1,:))==6 && length(sys_val(:,1))==1
sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),' ',num2str(sys_val(4)),' ',num2str(sys_val(5)),' ',num2str(sys_val(6)),']'];
elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==6
sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),';',num2str(sys_val(3)),';',num2str(sys_val(4)),';',num2str(sys_val(5)),';',num2str(sys_val(6)),']'];
elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==6
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),';',...
num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),';',...
num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),';',...
num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),';',...
num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),']'];
elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==6
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),';',...
num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),' ',num2str(sys_val(4,3)),';',...
num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),' ',num2str(sys_val(5,3)),';',...
num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),' ',num2str(sys_val(6,3)),']'];
elseif length(sys_val(1,:))==7 && length(sys_val(:,1))==1
sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),' ',num2str(sys_val(4)),' ',num2str(sys_val(5)),' ',num2str(sys_val(6)),' ',num2str(sys_val(7)),']'];
elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==7
sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),';',num2str(sys_val(3)),';',num2str(sys_val(4)),';',num2str(sys_val(5)),';',num2str(sys_val(6)),';',num2str(sys_val(7)),']'];
elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==7
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),';',...
num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),';',...
num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),';',...
num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),';',...
num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),';',...
num2str(sys_val(7,1)),' ',num2str(sys_val(7,2)),']'];
elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==7
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),';',...
num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),' ',num2str(sys_val(4,3)),';',...
num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),' ',num2str(sys_val(5,3)),';',...
num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),' ',num2str(sys_val(6,3)),';',...
num2str(sys_val(7,1)),' ',num2str(sys_val(7,2)),' ',num2str(sys_val(7,3)),']'];
elseif length(sys_val(1,:))==8 && length(sys_val(:,1))==1
sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),' ',num2str(sys_val(4)),' ',num2str(sys_val(5)),' ',num2str(sys_val(6)),' ',num2str(sys_val(7)),' ',num2str(sys_val(8)),']'];
elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==8
sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),';',num2str(sys_val(3)),';',num2str(sys_val(4)),';',num2str(sys_val(5)),';',num2str(sys_val(6)),';',num2str(sys_val(7)),';',num2str(sys_val(8)),']'];
elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==8
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),';',...
num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),';',...
num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),';',...
num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),';',...
num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),';',...
num2str(sys_val(7,1)),' ',num2str(sys_val(7,2)),';',...
num2str(sys_val(8,1)),' ',num2str(sys_val(8,2)),']'];
elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==8
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),';',...
num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),' ',num2str(sys_val(4,3)),';',...
num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),' ',num2str(sys_val(5,3)),';',...
num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),' ',num2str(sys_val(6,3)),';',...
num2str(sys_val(7,1)),' ',num2str(sys_val(7,2)),' ',num2str(sys_val(7,3)),';',...
num2str(sys_val(8,1)),' ',num2str(sys_val(8,2)),' ',num2str(sys_val(8,3)),']'];
elseif length(sys_val(1,:))==9 && length(sys_val(:,1))==1
sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),' ',num2str(sys_val(4)),' ',num2str(sys_val(5)),' ',num2str(sys_val(6)),' ',num2str(sys_val(7)),' ',num2str(sys_val(8)),' ',num2str(sys_val(9)),']'];
elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==9
sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),';',num2str(sys_val(3)),';',num2str(sys_val(4)),';',num2str(sys_val(5)),';',num2str(sys_val(6)),';',num2str(sys_val(7)),';',num2str(sys_val(8)),';',num2str(sys_val(9)),']'];
elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==9
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),';',...
num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),';',...
num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),';',...
num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),';',...
num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),';',...
num2str(sys_val(7,1)),' ',num2str(sys_val(7,2)),';',...
num2str(sys_val(8,1)),' ',num2str(sys_val(8,2)),';',...
num2str(sys_val(9,1)),' ',num2str(sys_val(9,2)),']'];
elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==9
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),';',...
num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),' ',num2str(sys_val(4,3)),';',...
num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),' ',num2str(sys_val(5,3)),';',...
num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),' ',num2str(sys_val(6,3)),';',...
num2str(sys_val(7,1)),' ',num2str(sys_val(7,2)),' ',num2str(sys_val(7,3)),';',...
num2str(sys_val(8,1)),' ',num2str(sys_val(8,2)),' ',num2str(sys_val(8,3)),';',...
num2str(sys_val(9,1)),' ',num2str(sys_val(9,2)),' ',num2str(sys_val(9,3)),']'];
elseif length(sys_val(1,:))==10 && length(sys_val(:,1))==1
sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),' ',num2str(sys_val(4)),' ',num2str(sys_val(5)),' ',num2str(sys_val(6)),' ',num2str(sys_val(7)),' ',num2str(sys_val(8)),' ',num2str(sys_val(9)),' ',num2str(sys_val(10)),']'];
elseif length(sys_val(1,:))==1 && length(sys_val(:,1))==10
sys_vals{2}=['[',num2str(sys_val(1)),';',num2str(sys_val(2)),';',num2str(sys_val(3)),';',num2str(sys_val(4)),';',num2str(sys_val(5)),';',num2str(sys_val(6)),';',num2str(sys_val(7)),';',num2str(sys_val(8)),';',num2str(sys_val(9)),';',num2str(sys_val(10)),']'];
elseif length(sys_val(1,:))==2 && length(sys_val(:,1))==10
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),';',...
num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),';',...
num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),';',...
num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),';',...
num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),';',...
num2str(sys_val(7,1)),' ',num2str(sys_val(7,2)),';',...
num2str(sys_val(8,1)),' ',num2str(sys_val(8,2)),';',...
num2str(sys_val(9,1)),' ',num2str(sys_val(9,2)),';',...
num2str(sys_val(10,1)),' ',num2str(sys_val(10,2)),']'];
elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==10
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),';',...
num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),' ',num2str(sys_val(4,3)),';',...
num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),' ',num2str(sys_val(5,3)),';',...
num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),' ',num2str(sys_val(6,3)),';',...
num2str(sys_val(7,1)),' ',num2str(sys_val(7,2)),' ',num2str(sys_val(7,3)),';',...
num2str(sys_val(8,1)),' ',num2str(sys_val(8,2)),' ',num2str(sys_val(8,3)),';',...
num2str(sys_val(9,1)),' ',num2str(sys_val(9,2)),' ',num2str(sys_val(9,3)),';',...
num2str(sys_val(10,1)),' ',num2str(sys_val(10,2)),' ',num2str(sys_val(10,3)),']'];
%%%%
elseif length(sys_val(1,:))==5 && length(sys_val(:,1))==2
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),...
' ',num2str(sys_val(1,3)),' ',num2str(sys_val(1,4)),' ',num2str(sys_val(1,5)),...
';',num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',...
num2str(sys_val(2,3)),' ',num2str(sys_val(2,4)),' ',num2str(sys_val(2,5)),']'];
% redundant now % elseif length(sys_val(1,:))==5 && length(sys_val(:,1))==1
% sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),' ',...
% num2str(sys_val(1,4)),' ',num2str(sys_val(1,5)),']'];
Code: Select all
elseif length(sys_val(1,:))==6 && length(sys_val(:,1))==2
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),...
' ',num2str(sys_val(1,3)),' ',num2str(sys_val(1,4)),' ',num2str(sys_val(1,5)),...
' ',num2str(sys_val(1,6)),';',num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',...
num2str(sys_val(2,3)),' ',num2str(sys_val(2,4)),' ',num2str(sys_val(2,5)),' ',num2str(sys_val(2,6)),']'];
% redundant now % elseif length(sys_val(1,:))==6 && length(sys_val(:,1))==1
% sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),' ',...
% num2str(sys_val(1,4)),' ',num2str(sys_val(1,5)),' ',num2str(sys_val(1,6)),']'];
Code: Select all
% elseif length(sys_val(1,:))==9 && length(sys_val(:,1))==1
% sys_vals{2}=['[',num2str(sys_val(1)),' ',num2str(sys_val(2)),' ',num2str(sys_val(3)),' ',...
% num2str(sys_val(4)),' ',num2str(sys_val(5)),' ',num2str(sys_val(6)),' ',...
% num2str(sys_val(7)),' ',num2str(sys_val(8)),' ',num2str(sys_val(9)),']'];
% elseif length(sys_val(1,:))==3 && length(sys_val(:,1))==6
% sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
% num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
% num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),']; [',...
% num2str(sys_val(4,1)),' ',num2str(sys_val(4,2)),' ',num2str(sys_val(4,3)),';',...
% num2str(sys_val(5,1)),' ',num2str(sys_val(5,2)),' ',num2str(sys_val(5,3)),';',...
% num2str(sys_val(6,1)),' ',num2str(sys_val(6,2)),' ',num2str(sys_val(6,3)),']'];
elseif length(sys_val(1,:))==6 && length(sys_val(:,1))==3
sys_vals{2}=['[',num2str(sys_val(1,1)),' ',num2str(sys_val(1,2)),' ',num2str(sys_val(1,3)),';',...
num2str(sys_val(2,1)),' ',num2str(sys_val(2,2)),' ',num2str(sys_val(2,3)),';',...
num2str(sys_val(3,1)),' ',num2str(sys_val(3,2)),' ',num2str(sys_val(3,3)),'], [',...
num2str(sys_val(1,4)),' ',num2str(sys_val(1,5)),' ',num2str(sys_val(1,6)),';',...
num2str(sys_val(2,4)),' ',num2str(sys_val(2,5)),' ',num2str(sys_val(2,6)),';',...
num2str(sys_val(3,4)),' ',num2str(sys_val(3,5)),' ',num2str(sys_val(3,6)),']'];
end
syslst_fil=[sys_vals(1),'=',sys_vals(2)];
syslst_new{j}=[syslst_fil{1},syslst_fil{2},syslst_fil{3}];
end
otherwise
syslst_new{j}=syslst{j};
end
end
syslst=syslst_new;
end
end
function [vary]=getvarys(~,varypars,t)