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

Vektoren in Tabellenfenster ausgeben

 

Spoony0987
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 13.10.15
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 14.10.2015, 12:56     Titel: Vektoren in Tabellenfenster ausgeben
  Antworten mit Zitat      
Hallo zusammen,

da ich jetzt schon seit etwa 3h am suchen bin und nicht fündig werde, habe ich die Hoffnung mir kann hier jmd weiter helfen.
Mir stellt sich folgendes Problem:
Ich habe Messdaten in Variablen im Workspace.
Aus diesen Messdaten lese ich die Peaks aus. Je nach Peakgröße bekomme ich zum Beispiel bei dem Peak > 2,5µm ein Vektor, und bei den Peaks >4µm ein zweiten Vektor.
Nun möchte ich die Vektoren in einem Fenster bzw. in einer Tabelle anzeigen lassen wenn das Programm fertig gerechnet hat. Wie man in etwa so ein Tabellenfenster erstellt hab ich schon gefunden, jedoch komm ich nicht drauf wie ich in das Tabellen fenster in Spalte 1 den ersten Vektor, in Spalte 2 den zweiten vektor usw. bekomme...

mein Programm sieht bis jetzt so aus:
Code:

%% Alle Peaks (Maxima)

[pkx,lcx] = findpeaks(x);       % Es werden alle Peaks (Höheren Ausschläge)
                                % der X-Achse ermittelt pkx Werte in mm
lcx_time = Time(lcx,1);         % Die zu den Peaks in X zugehörige Zeit
[pky,lcy] = findpeaks(y);       % Es werden alle Peaks (Höheren Ausschläge)
                                % der Y-Achse ermittelt pkx Werte in mm
lcy_time = Time(lcy,1);         % Die zu den Peaks in Y zugehörige Zeit

pkx_max1 = pkx(x(lcx)>C.Abweichungsgrenze1);    % Alle Fehlerüberschreitungen über Stufe 1 in X
pky_max1 = pky(y(lcy)>C.Abweichungsgrenze1);    % Alle Fehlerüberschreitungen über Stufe 1 in Y

pkx_max2 = pkx(x(lcx)>C.Abweichungsgrenze2);    % Alle Fehlerüberschreitungen über Stufe 2 in X
pky_max2 = pky(y(lcy)>C.Abweichungsgrenze2);    % Alle Fehlerüberschreitungen über Stufe 2 in Y

pkx_max3 = pkx(x(lcx)>C.Abweichungsgrenze3);    % Alle Fehlerüberschreitungen über Stufe 3 in X
pky_max3 = pky(y(lcy)>C.Abweichungsgrenze3);    % Alle Fehlerüberschreitungen über Stufe 3 in Y

pkx_max4 = pkx(x(lcx)>C.Abweichungsgrenze4);    % Alle Fehlerüberschreitungen über Stufe 4 in X
pky_max4 = pky(y(lcy)>C.Abweichungsgrenze4);    % Alle Fehlerüberschreitungen über Stufe 4 in Y

pkx_max5 = pkx(x(lcx)>C.Abweichungsgrenze5);    % Alle Fehlerüberschreitungen über Stufe 5 in X
pky_max5 = pky(y(lcy)>C.Abweichungsgrenze5);    % Alle Fehlerüberschreitungen über Stufe 5 in Y

%% Erstellung einer Tabelle
 f = figure('Position', [350 300 800 500],'NumberTitle','off','Name','Fehlertabelle');
 tab1 = uitable('Parent', f, 'Position', [15 170 768 320]);
 
complexData1 = {num2str(pkx_max1),num2str(pkx_max2),num2str(pkx_max3)...
                num2str(pkx_max4),num2str(pkx_max5)};


set(tab1, 'Data', complexData1);
set(tab1, 'ColumnName', {'Fehlerstufe 1', 'Fehlerstufe 2', 'Fehlerstufe 3',...
                         'Fehlerstufe 4', 'Fehlerstufe 5'});
 


Würde mich freuen wenn mir jmd. ein Tipp hat.
Danke euch schonmal im Voraus

bis dann
_________________

Cheers Patrick
B. Eng.
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: 14.10.2015, 13:03     Titel: Re: Vektoren in Tabellenfenster ausgeben
  Antworten mit Zitat      
Hallo Spoony0987,

Wie soll denn der Output genau aussehen? In welcher Form sollen die Vektoren erscheinen?
Für das eigentliche Problem würde es übrigens reichen, einfach 2 Vektoren zu definieren:
Code:
a = rand(1, 3);
b = rand(1,4);

Die Bedeutung der Vektoren lenkt hier für die Frage nur ab.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Spoony0987
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 13.10.15
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 14.10.2015, 13:16     Titel:
  Antworten mit Zitat      
Hallo Jan,
vielen Dank erstmal für die schnelle Rückmeldung.

Du hast recht, hier kurz mit einfachen Vektoren allerdings Spaltenschreibweise
Ich hätte gerne den Vektor a in der Tabelle in der ersten Spalte und direkt nebendran den Vektor b in der nächsten Spalte.

Bin mir aber nicht ganz sicher wie ich das in complexData1 schreiben muss damit die Zahlen des Vektors untereinander geschrieben werden, so wie es jetzt programmiert ist, steht der komplette Vektor in einem Feld wenn ich das richtig deute...

Code:

a = rand(3,1);
b = rand(4,1);

 f = figure('Position', [350 300 800 500],'NumberTitle','off','Name','Fehlertabelle');
 tab1 = uitable('Parent', f, 'Position', [15 170 768 320]);
 
complexData1 = {num2str(a),num2str(b)};


set(tab1, 'Data', complexData1);
set(tab1, 'ColumnName', {'Fehlerstufe 1', 'Fehlerstufe 2', 'Fehlerstufe 3',...
                         'Fehlerstufe 4', 'Fehlerstufe 5'});
 


Danke und Gruß Spoony
_________________

Cheers Patrick
B. Eng.
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: 14.10.2015, 14:05     Titel:
  Antworten mit Zitat      
Hallo Spoony0987,

Code:
a = rand(3,1);
b = rand(4,1);

f = figure('Position', [350 300 800 500],'NumberTitle','off','Name','Fehlertabelle');
tab1 = uitable('Parent', f, 'Position', [15 170 768 320]);

C{1} = sprintfc('%g', a);
C{2} = sprintfc('%g', b);

Len = max(cellfun('length', C));
AllC = cell(Len, numel(C));
for k = 1:numel(C)
  aC = C{k};
  AllC(1:length(aC), k) = aC(:);
end

set(tab1, 'Data', AllC);

Der einzige Nachteil hier ist, dass sprintfc keine dokumentierte Funktion ist. Sehr sehr schade. Wenn Du sicher gehen willst, dass der Code auch noch in Zukunft läuft:
Code:
function C = mySprintfc(Fmt, Value)
C = cell(size(Value));
for k = 1:numel(Value)
  C{k} = sprintf(Fmt, Value(k));
end

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Spoony0987
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 13.10.15
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 14.10.2015, 14:51     Titel:
  Antworten mit Zitat      
Vielen Dank,

das kommt genau da hin was ich brauch! Very Happy
Aber meinst du könntest noch erklären was genau passiert, weil so richtig nachvollziehen kann ich das nicht. Und der zweite Code versteh ich auch nicht und wofür ich den brauch bzw. kommt der dazu oder ist das eine zweite Lösung? Question

Vielen Dank nochmal!
_________________

Cheers Patrick
B. Eng.
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: 15.10.2015, 23:27     Titel:
  Antworten mit Zitat      
Hallo Spoony0987,

Du kannst den Code Zeile für Zeile ablaufen lassen, wenn Du den Debugger verwendest. Das hilft oft dabei den Code zu verstehen.

Die Funktion sprintfc erzeugt keinen String, sondern einen Cell-String.
Leider ist diese Funktion aber "nicht dokumentiert". Das heißt, das Mathworks sie vielleicht beim nächsten Matlab-Release nicht mehr ausliefert. Dann würde der Code mit einem Fehler abbrechen.
Um das zu vermeiden habe ich die Funktion mySprintfc geschrieben, die das gleiche macht wie sprintfc , nur langsamer. Man kann dann "sprintfc" durch "mySprintfc" ersetzen.

Gruß, Jan
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 - 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.