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

Matlab - ein Array in einer Schleife füllen

 

JP2020

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2020, 00:31     Titel: Matlab - ein Array in einer Schleife füllen
  Antworten mit Zitat      
Ich habe mein Matlab Programm etwas ausgeweitet und lasse x viele Daten durch das Programm analysieren. Bei jeden Durchlauf werden die Variabel-Namen hochgezählt, wie beispielsweise der Vergleich von jeder Kurve zur ersten Kurven (Vergleich_02, Vergleich_03, …). Am Ende würde ich gerne eine Tabelle erstellen lassen, wo alle Vergleichswerte und deren Ergebnis drin steht, mag aber ungern eine Tabelle für 10 Vergleiche verfertigen und mit if Schleifen einfügen.

Aktuell hänge ich eine gute und schöne Lösung zu finden, aber vielleicht stehe ich auch mal wieder nur auf dem Schlauch...
Ich hoffe ihr habt mein Problem verstanden und habt eine Idee um das Problem zu lösen Smile

hier drunter folgt der Code... wie gesagt ich habe noch keine Lösung zum Ausfüllen des Arrays gefunden, bin aber dankbar über jeden Tipp oder Hilfe. Als Ausgabe hätte ich einfach eine nette Tabelle, wo links Vergleich steht und rechts die Werte dazu Smile

Code:
%mehrere Analyse miteinander auf Symmetrie vergleichen
            if j > 1
                    diff                        = CoM_Analyse_01 - eval(sprintf('CoM_Analyse_%02d',j));
                    eval(sprintf('s_%02d = diff',j));
                    dif_rms                     = rms(eval(sprintf('s_%02d',j)));
           end        
     
         
%Vergleiche als Array speichern
%             Vergleich= {    'Vergleich_01',         ;
%                             'Vergleich_02',         ;
%                             'Vergleich_03',         ;
%                             'Vergleich_04',         ;
%                             'Vergleich_05',         ;
%                             'Vergleich_06',         ;
%                             'Vergleich_07',         ;
%                             'Vergleich_08',         ;
%                             'Vergleich_09',         ;
%                             'Vergleich_10',         ;
%                             'Vergleich_11',         ;
%                             'Vergleich_12',         ;
%                             'Vergleich_13',         ;
%                             'Vergleich_14',         ;
%                             'Vergleich_15',         ;
%                             'Vergleich_16',         ;
%                             };
                       
%array als Tabelle umspeichern
            %Vergleich = array2table(Vergleich,'VariableNames',{'Vergleich','Wert'});
            %writetable(Vergleich,'Vergleichsanalyse.xlsx');


Harald
Forum-Meister

Forum-Meister


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

durchnumerierte Variablennamen sind nie eine gute Idee. Man hängt damit bei eval fest und muss in allen weiteren Schritten mit eval arbeiten. Besser wäre ein Cell Array. Dann könntest du die Cells problemlos untereinanderhängen.

Für den linken Teil ist das einfachste:
Code:
"Vergleich" + (1:16)'


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
JP2020

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2020, 22:02     Titel:
  Antworten mit Zitat      
Herzlichen Dank für die schnelle Antwort.
Ich verstehe was du meinst, nur leider weiß ich nicht genau wie ich das umsetzten soll. Mein Problem sieht wie folgt aus:

Ich habe ein Programm das x viele Datensätze einliest (das x wird immer vorher neu festgelegt). Danach analysiert es jeden Datensatz für sich und speichert eine bestimme Variabel unter den Namen Analyse_0x ab. Dieser Wert wird dann immer mit der Analyse_01 vergliechen und das Ergebnis ist dann Vergleich_0x. Wenn alle x Datensätze durchgelaufen sind, möchte ich gerne eine Tabelle haben, die mir das Ergebnis aller x Vergleiche zeigt.

Hier meinen Code dazu

Code:

% Schleife
Anzahl      = 1;
for j       = 1: Anzahl

% Hauptprogramm aber ansich unnötig, da hier nur Variablen innerhalb eines Datensatzes verglichen werden Smile

% CoM_Step umspeichern als CoM_Analyse_XX für die spätere Vergleichsanalyse
            eval(sprintf('CoM_Analyse_%02d = CoM_Step',j));

% mehrere Analyse miteinander auf Symmetrie vergleichen
            if j > 1
                    diff                        = CoM_Analyse_01 - eval(sprintf('CoM_Analyse_%02d',j));
                    eval(sprintf('s_%02d = diff',j));
                    dif_rms                     = rms(eval(sprintf('s_%02d',j)));
           end        
     
         
% Vergleiche als Array speichern
%             Vergleich= {    'Vergleich_01',         ;
%                             'Vergleich_02',         ;
%                             'Vergleich_03',         ;
%                             'Vergleich_04',         ;
%                             'Vergleich_05',         ;
%                             };
                       
% array als Tabelle umspeichern
            Vergleich = array2table(Vergleich,'VariableNames',{'Vergleich','Wert'});
            writetable(Vergleich,'Vergleichsanalyse.xlsx');
           
% Auszählvariabel für Loop hochzählen
            j              = j + 1;
 
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.03.2020, 23:43     Titel:
  Antworten mit Zitat      
Hallo,

indem du statt des Variablennamen CoM_Analyse_k den Cell-Index CoM_Analyse{k} verwendest.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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 - 2024 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.