
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%      A Algorithm for state Space Circuit Analysis.                  %
%                                                                     %
%                                                                     %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% Netzliste Einlesen
[Name,N1,N2,arg3] = textread('C:\Program Files\Orcad\PSpice\reihensching2-schematic1.net',...
    '%s %s %s %s','headerlines',1);


%% Initialisierung von den Elementen
numElem = 0;     % Number of element(R,L,C)
numV = 0;        % Number of independant voltage source
numNode = 0;     % Number of Node
numInputs = 0;   % Number of Inputs
numR = 0 ;       % Number of Wiedertsnad
numL = 0 ;       % Number of Spule
numC = 0 ;       % Number of Kondensator


%% Preallokierung structure arrays
Element = struct('Name',{},'Node1',{},'Node2',{},'Value',{});
Vsource = struct ('Name',{},'Node1',{},'Node2',{},'Value',{});
NumNode = struct('Name',{});

%%Preallokierung cell arrays
% Concatenate die beiden cell arrays und mit der function unique nimmt man die
% Elementen weg, die sich wiederholen.

Node = cat(1,N1,N2);
GesamtNode = unique(Node);

%% Parse the Inputs (Systemzerlegung : Hier werden die Komponenten aussortiert)

for i = 1:length(Name)
    
    switch (Name{i}(1)),
      case {'R','L','C'},
          
          numElem = numElem + 1 ;
          Element(numElem).Name = Name{i};
          Element(numElem).Node1 = str2num(N1{i});
          Element(numElem).Node2 = str2num(N2{i});
          
          
          try
              Element(numELem).Value = str2num(arg3{i});
              
          catch
              
             Element(numElem).Value = nan;
          end
         
        case {'V'},
           numV = numV + 1 ;
           Vsource(numV).Name = Name{i};
           Vsource(numV).Node1 = str2num(N1{i});
           Vsource(numV).Node2 = str2num(N2{i});
            try 
                Vsource(numV).Value = str2num(arg3{i});
            catch
                Vsource(numV).Value = nan
            end
            
           
    end
    numNode = max(str2num(N1{i}),max(str2num(N2{i}),numNode));
    
end
%% Komponentengleichungen aufstellen
  % Hier gehen wir die Schaltung durch und stellen wir die entsprechende
  % Gleichung
for i = 1:numElem,
   
    switch(Element(i).Name(1)),
        case 'R',
            numR = numR+1;
            UR = [Element(i).Name,'*i'];
            
        case 'L',
          numL = numL+1;
           UL = [Element(i).Name,'*di/dt'];
           
        case 'C',
         numC = numC +1;
          i_1 = [Element(i).Name,'*dUc/dt'];
    end
    
end


%% Kopplungsgleichungen Aufstellen
 % Hier werden die Maschengleichungen anhang der netzliste aufgestellt.
 
    
 
    
 

%% Aufstellung des Deskriptorssystems
% Aufstellung der z-Matrix
% Zerlegen wir die Z Matrix in fünf Kleine Matrixe
% Die Matrixen Z1,Z2,Z3,Z4,Z5
 
% Aufbau Z1

for i = 1:numR
    for j = 1
            
       Z1{i,j} = UR;
                  
    end 
end

% Aufbau Z2

for i = 1:numC
    for j = 1
        Z2{i,j} = 'UC';
    end
end

% Aufbau Z3

for i = 1:numElem
    for j = numNode
        if(Element(i).Node1 == 0  && Element(i).Node2 == j );
            
           Z3 = [Element(i).Name '*i' ];
           
        elseif(Element(i).Node2 == 0 && Element(i).Node1 == j );
            
            Z3 = [Element(i).Name '*i' ];
            
        %elseif(Element(i).Node1 == 0 || Element(i).Node2 == 0 && ...
              %  Element(i).Node)
           
        end
    end
end

% Aufbau Z4
for i = 1:numL
    for j = 1
        Z4{i,j}= UL;
    end
end

% Aufbau Z5

for i = 1:numC
    for j = 1
        Z5{i,j} = i_1;
    end 
end

% Aufbau Z

Z = [Z1;Z2;Z3;Z4;Z5];



%% Aufstellung Matrix E
% Initialisierung E Matrix
E = cell(numElem,numElem);

for i = 1:numElem;
    for j = 1:numElem;
        
    end
end

%% Austellung Matrix F






%% Aufstellung Matrix g




%% Aufstellung Matrix h

