WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

struct array, cell array

 

theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2017, 17:05     Titel:
  Antworten mit Zitat      
Wenn ich diesen Teil
Code:
%Anlegen eines structure array
c = {W,sortEV};
s = cell2struct(c, 'matA')


innerhalb meiner Funktion schreibe, dann erhalte ich kein struct mit meinen Matrizen.
Hat denn jemand einen Ansatz dafür?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.07.2017, 18:10     Titel:
  Antworten mit Zitat      
Hallo,

wenn du in der Funktion die Matrizen immer überschreibst, dann wird mit dem Befehl auch nur eine Matrix erzeugt.

Letzter Versuch von meiner Seite: poste bitte den Inhalt der Funktion oder zumindest ein Beispiel, das auch Matrizen in dieser Form erzeugt, damit man sieht, womit du arbeitest. Ansonsten kann zumindest ich dir nicht helfen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2017, 18:21     Titel:
  Antworten mit Zitat      
Code:
function [W,sortEV] = calculate(matrix)
g=size(matrix);
cellarray{1,(g(2))}=[];
 for i = 1:g(2)
  for j = i+1:g(2)
        m=matrix;
        %disp(i:j);
        W=m(:,i:j) %Ausgabe der Matrizen
       [sortEV]=eigenwert(W); %Eigenwerte der Matrizen W
 
%struct zum Speichern von W und sortEV    
 c = {W,sortEV};
 s = cell2struct(c, 'matA')
[/color]
  end

 end

end
 


So sieht es bisher aus. Wenn c und s außerhalb der Funktion stehen wird nur die letzte Matrix mit ihren Eigenwerten gespeichert.
Wenn ich es so schreibe wird erst gar kein struct angelegt.

Danke für jede Hilfe oder Anregung
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.07.2017, 18:35     Titel:
  Antworten mit Zitat      
Hallo,

ich hatte gefragt, ob etwas in einer for-Schleife erzeugt wird. Leider bist du nicht darauf eingegangen. Auch sind die orangen Balken rechts im Editor nicht zum Spaß da, sondern gerade für Anfänger wertvolle Hinweise auf mögliche Probleme im Code.

Hier nun der angepasste Code. Auf cellarray kannst du dann z.B. cell2struct anwenden.
Code:
function cellarray = calculate(matrix)
g=size(matrix);
%cellarray{2,(g(2))}=[];
k = 1;
for i = 1:g(2)
    for j = i+1:g(2)
        m=matrix;
        %disp(i:j);
        W=m(:,i:j); %Ausgabe der Matrizen
        [sortEV]=eigenwert(W); %Eigenwerte der Matrizen W
       
        %Speichern von W und sortEV
        cellarray{1, k} = W;
        cellarray{2, k} = sortEV;
        k = k+1;
    end
   
end

end


Bitte das nächste Mal gleich die relevanten Infos (hier: die Funktion) zur Verfügung stellen - dann bekommst du auch viel schneller die Antwort, die dir - hoffentlich - weiterhilft.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2017, 13:12     Titel:
  Antworten mit Zitat      
vielen Dank für die Hilfe! Laughing


ich bin mittlerweile auch so weit, dass ich meine Eigenwerte nach bestimmten Kriterien untersuche.

Code:

se_var=0.082; %search variable

for k=1:length(cellarray)
    B{k}=find(cellarray{2,k}<=se_var);
    k=k+1;
end;
 

ich habe jetzt ein Cellarray B erstellt welches mir anzeigt ob eigenwerte kleiner 0.082 vorhanden sind.


Nun wollte ich mir dazu die
Code:

cellarray(1,k) %matrizen
cellarray(2,k)%vektoren mit eigenwerten
 

ausgeben lassen. Das ganze natürlich über den index k, aber konnte noch nicht so richtig einen Zusammenhang zwischen meinen cellarray(1,k), cellarray(2,k) und B herstellen.

Es geht sicherlich viel einfacher. Hat jemand eine Idee?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.07.2017, 17:16     Titel:
  Antworten mit Zitat      
Hallo,

B sollte die selbe Spaltenzahl wie cellarray haben. Dann ginge
Code:
cellarray = [cellarray; B]


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2017, 13:07     Titel:
  Antworten mit Zitat      
vielen Dank. Hat geklappt.

ich bekomme jetzt nur die Matrizen und Vektoren zurück die ich haben möchte. allerdings erscheinen sie auch wieder nur im command-window.
Das speichern in einem neuen Cell hat weder innnerhalb der function noch außerhalb funktioniert

meine function sieht jetzt so aus
Code:
function Output(cellarray,B)

%Gibt nur die Matrix mit Eigenwerten zurück
    for k=1:length(cellarray)
        if ~isempty(cellarray{3,k})
        cellarray{1,k}
                cellarray{2,k}
       end
    end  
end

wie kann ich denn die entsprechenden Matrizen und Vektoren ebenfalls extra speichern?

gruß theresa
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.07.2017, 17:28     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
ich bekomme jetzt nur die Matrizen und Vektoren zurück die ich haben möchte. allerdings erscheinen sie auch wieder nur im command-window.

Gleiches Problem, gleiche Lösung?

Zitat:
Das speichern in einem neuen Cell hat weder innnerhalb der function noch außerhalb funktioniert

Weil die Funktion diese Daten nicht zurückgibt. Sie gibt genau genommen überhaupt nichts zurück.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.