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

Verktoren zu Matrix zusammenfassen

 

Konjo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.01.2015, 22:23     Titel: Verktoren zu Matrix zusammenfassen
  Antworten mit Zitat      
Hallo,

ich bekomme von einem externen Programm, sehr viele Messdaten. Leider sind die ungünstig formatiert (daran lässt sich nichts ändern).
Ich habe zum Beispiel Utest1_1,Utest1_2,Utest1_3 ... usw.

Wie kann ich die automatisiert in eine Matrix kopieren?

D.h. ich hätte gerne diesen Befehl für 500 Signalvektoren

Ugesamt = [Utest1_1; Utest1_2; Utest1_3; .........];

DANKE


Harald
Forum-Meister

Forum-Meister


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

wie werden diese Daten denn eingelesen?
Falls sie z.B. aus einer .mat-Datei kommen, ginge
Code:


Dann hätte man statt 500 Variablen 500 Felder einer einzigen Strukturvariablen, und das ließe sich deutlich eleganter verarbeiten.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2015, 02:12     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank für deine Antwort.
Ja die kommen aus einem mat File eines speziellen Messgeräts.

Code:

clear all;
u1 = 1:10;
u2 = u1;
u3 = u2;
u4 = u3;
save test.mat
clear all;
data = load ('test.mat')
 


Ich verstehe noch nicht wie ich dann darauf besser zugreifen kann.

Ich hätte jetzt gerne eine Matrix mit
u = [data.u1...
und zwar irgendwie automatisiert.

sowas wie (was natürlich so nicht geht)
Code:

u = []
for i = 1:500
u = [u; data.ui]
end
 


Vielen Dank und gute Nacht.
 
Konjo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2015, 02:20     Titel:
  Antworten mit Zitat      
Code:

Data = load('FileName.mat');
Fields = fieldnames(Data);
for iField = 1:length(Fields)
   Value = Data.(Fields{iField});
   ... Processing
end
 

Quelle: http://www.gomatlab.de/auf-structs-zugreifen-t15020.html

Damit sollte ich klarkommen. Wenn es noch geschickter geht, bin ich gerne für Vorschläge offen. Vielen lieben Dank.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.01.2015, 04:51     Titel:
  Antworten mit Zitat      
Hallo,

die einzige andere Möglichkeit, die ich sehe, wäre
Code:
s.a1 = [1; 2; 3]
s.a2 = [4;5; 6]
s.a3 = [7;8; 9]
scollect = cell2mat(cellfun(@(f) s.(f), fieldnames(s),'UniformOutput', false)')


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.01.2015, 16:22     Titel:
  Antworten mit Zitat      
Hallo Konjo,

Noch ein Vorschlag:
Code:
data = load ('test.mat');
C = struct2cell(data);
A = cat(1, C{:});
 

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Konjo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2015, 01:07     Titel:
  Antworten mit Zitat      
Danke für die Vorschläge. Ich habe es jetzt erstmal so gelöst:
Das andere schaue ich mir noch mal an....
Code:

s.a1 = [1 2 3];
s.a2 = [1 2 3];
s.a3 = [1 2 3];
s.b1 = [1 2 3];
s.b2 = [1 2 3];
s.b3 = [1 2 3];
num = 3;
ss = zeros(2,num,length(s.a1));
for j = 1:2
    for i= 1:num
        ss(j,i,:) = s.(['a',num2str(i)]);
    end
end
 
 
Konjo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2015, 01:09     Titel:
  Antworten mit Zitat      
Sorry oben ist noch ein Fehler drin, aber ich denke es ist klar wie ich es meine.
Noch mal Danke
 
Harald
Forum-Meister

Forum-Meister


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

bei deiner neuen Lösung erwischt du aber nur die a's.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2015, 18:09     Titel:
  Antworten mit Zitat      
Hallo Harald,

Danke für deine Hilfe.
Ich hatte ja noch geschrieben, dass noch ein Fehler drin ist. War ja nur Beispielcode...
So habe ich es ungefähr gemacht

Code:

num = 500;
ss = zeros(2,num,length(s.a1));
for j = 1:2
    for i= 1:num
        Messsignal1(j,i,:) = Messsignal.(['a',num2str(i)]);
        Messsignal2(j,i,:) = Messsignal.(['b',num2str(i)]);
    end
end
 


Und habe auch alles erwischt Smile

Bei deinem Code wird dann alles in eine Matrix gesteckt, was ich dann wieder trennen müsste.

Kannst du deinen Code noch mal erklären. Ich verstehe da nur Bahnhof

scollect = cell2mat(cellfun(@(f) s.(f), fieldnames(s),'UniformOutput', false)')
 
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 - 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.