Die Mathe-Redaktion - 23.11.2017 17:45 - Registrieren/Login
Auswahl
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden oder den Newsletter bestellen.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 720 Gäste und 18 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von mire2 gaussmath
Mathematische Software & Apps » Matlab » Daten in uitable darstellen
Druckversion
Druckversion
Autor
Beruf J Daten in uitable darstellen
physicist07
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 27.05.2011
Mitteilungen: 15
Aus: Österreich
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2013-07-25


Hallo!

Habe folgendes Problem/Frage:

Ich habe eine Funktion definiert, in der ich eine Struktur erstellt habe, welche mir pro Probe/Messung alle dazugehörigen Werte wiedergeben kann, wenn ich den bestimmten/gesuchten Wert aufrufe (soweit so gut - struct halt)

Nun möchte ich diese Struktur auf meiner GUI in einer Tabelle darstellen! Und hier ist der Punkt an dem ich nicht weiterkomme! Könnt ihr mir vielleicht weiterhelfen?

Danke schon im voraus!


GLG



  Profil  Quote  Link auf diesen Beitrag Link
gaussmath
Senior Letzter Besuch: im letzten Monat
Dabei seit: 16.06.2007
Mitteilungen: 9031
Aus: Hannover
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2013-07-25


Hallo,

wo hakt es denn? Hast du bereits eine Tabelle eingebunden in das GUI?

Grüße, Marc



  Profil  Quote  Link auf diesen Beitrag Link
physicist07
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 27.05.2011
Mitteilungen: 15
Aus: Österreich
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2013-07-25


Ja ich habe bereits eine Tabelle eingebunden, nur bekomme ich meine Werte nicht in diese Tabelle



  Profil  Quote  Link auf diesen Beitrag Link
gaussmath
Senior Letzter Besuch: im letzten Monat
Dabei seit: 16.06.2007
Mitteilungen: 9031
Aus: Hannover
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2013-07-25


Probiere es mal so:
Matlab
% structArray ist ein Array aus structs mit den Properties A und B
 
myUitable = uitable;
dataToShow = [{structArray.A}',{structArray.B}'];
set(myUitable ,'Data',dataToShow);

[ Nachricht wurde editiert von gaussmath am 25.07.2013 15:09:02 ]



  Profil  Quote  Link auf diesen Beitrag Link
physicist07
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 27.05.2011
Mitteilungen: 15
Aus: Österreich
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, vom Themenstarter, eingetragen 2013-07-25


Nein funktioniert leider nicht :(



  Profil  Quote  Link auf diesen Beitrag Link
gaussmath
Senior Letzter Besuch: im letzten Monat
Dabei seit: 16.06.2007
Mitteilungen: 9031
Aus: Hannover
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, eingetragen 2013-07-25


Ein bisschen mehr Info wäre nicht schlecht. Wie lauten die Fehlermeldungen? Kannst du eventuell die relevanten Teile deines Codes posten?



  Profil  Quote  Link auf diesen Beitrag Link
physicist07
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 27.05.2011
Mitteilungen: 15
Aus: Österreich
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, vom Themenstarter, eingetragen 2013-07-25


Es tut sich gar nichts, keine Fehlermeldung nichts! Finde es auch gerade sehr strange:

function probe_iden(num_prob,C)
% probe_iden(num_prob)
% struct probe definieren
probe = struct('Messzeit', C(:,1), ...
               'Kraft', C(:,2), ...
               'Temperatur', C(:,3), ...
               'Umpoler', C(:,4), ...
               'Potential', C(:,5), ...
               'Video_Weg', C(:,6), ...
               'Weg_induk', C(:,7), ...
               'delta_A', C(:,8), ...
               'Weg_DMS', C(:,9), ...
               'Kerblaenge_Secotom', 28.6, ...
               'Kerblaenge_Klinge', 1.5, ...
               'Kerblaenge_Anschw_lang', 0, ...  
               'Kerblaenge_Anschw_kurz', 0, ...
               'Kerblaenge_Anschw_mittel', 0, ... 
               'Gesamt', 0, ...  
               'Cycles', 0, ...
               'F_min', 200, ...
               'F_max', 2000, ...
               'Lastverhaeltnis', 0.1, ...
               'Probenlaenge', 60.3, ...
               'Probendicke', 1.5, ...
               'Risslaenge', 0, ...
               'Korrekturfaktor', 0, ...
               'Korrekturfunktion', 0, ...
               'K_min', 0, ...
               'K_max', 0, ...
               'K_krit', 0, ...
               'delta_K', 0);
 
 
% Einleseschleife für:
% -> Kerblaenge_Anschw_lang
% -> Kerblaenge_Anschw_kurz
% -> Cycles
% n=1 bis n=num_pers
 
%num_prob = 1;
fprintf('Bitte die Daten von der Probe Nummer %g eingeben: \n', num_prob);
 
for n = 1:num_prob
    probe(n).Kerblaenge_Anschw_lang = input('Kerblaenge Anschwingen lang:');
    probe(n).Kerblaenge_Anschw_kurz = input('Kerblaenge Anschwingen kurz:');
    probe(n).Cycles = input('Cycles:');
    fprintf( '\n' );
end

hier meine Struktur und diese einzelenen unter"titel" will ich als tabelle ...also:

kerblaenge | Risslaenge | bla | bla |
28.30      | 1.5        |Zahl |Zahl |

sowas möcht ich in meiner GUI haben, damit ich übersichtlich pro messung meine werte habe



  Profil  Quote  Link auf diesen Beitrag Link
gaussmath
Senior Letzter Besuch: im letzten Monat
Dabei seit: 16.06.2007
Mitteilungen: 9031
Aus: Hannover
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.7, eingetragen 2013-07-25


Ich muss ganz ehrlich sagen, dass ich das nicht verstehe, was du da vorhast.

Willst du "probe" komplett in einer Tabelle darstellen? Warum gibt die Funktion "probe" nicht zurück?

Was genau willst du darstellen in der Tabelle?



  Profil  Quote  Link auf diesen Beitrag Link
physicist07
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 27.05.2011
Mitteilungen: 15
Aus: Österreich
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.8, vom Themenstarter, eingetragen 2013-07-25


Hintergrunderklärung:

Ich mach ein Praktikum und mein betreuer wollte, dass ich alle Werte, die so gemessen werden bzw vorliegen in einer Struktur verpacke und diese struktur dann pro Probenstück in der benutzeroberfläche in einer tabelle darstellen kann und dort will er, wenn notwendig, die messwerte noch umändern können. anhand dieser tabelle bzw. den eingelesenen daten sollen dann bestimmte werte ausgerechnet werden und plots erstellt werden, die dann auch in meiner benutzeroberfläche dargestellt werden sollen... alles soweit so gut. Ich selbst versteh nur die sinnhaftigkeit nicht, zuerst eine struktur erstellen zu müssen und dann diese in einer tabelle darzustellen.... meine idee war es ja die einzelnen werte aus der struktur aufzurufen udn mit denen dann die berechnungen zu machen... mein betreuer will aber so wie oben erklärt.... Ich hoffe das war jetzt einigermaßen verständlich :/

PS: danke für deine bemühungen



  Profil  Quote  Link auf diesen Beitrag Link
gaussmath
Senior Letzter Besuch: im letzten Monat
Dabei seit: 16.06.2007
Mitteilungen: 9031
Aus: Hannover
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.9, eingetragen 2013-07-25


OK, dann ändere mal den Funktionskopf zu
Matlab
function probe=probe_iden(num_prob,C)
...

Dann weiter:
Matlab
probe = probe_iden(num_prob,C);
myUitable = handles.DerNameDerTabelle;
dataToShow = [{probe.Messzeit}',{probe.Temperatur}', ...];
set(myUitable ,'Data',dataToShow);

Jetzt besteht das Problem, dass manche Spalten nicht die gleiche Länge haben. Dazu kann man die Funktion an den entsprechenden Stellen anpassen:
Matlab
function probe=probe_iden(num_prob,C)
 
[row,~]=size(C);
% probe_iden(num_prob)
% struct probe definieren
probe = struct('Messzeit', C(:,1), ...
               'Kraft', C(:,2), ...
               'Temperatur', C(:,3), ...
               'Umpoler', C(:,4), ...
               'Potential', C(:,5), ...
               'Video_Weg', C(:,6), ...
               'Weg_induk', C(:,7), ...
               'delta_A', C(:,8), ...
               'Weg_DMS', C(:,9), ...
               'Kerblaenge_Secotom', ones(row,1)*28.6, ... 
               'Kerblaenge_Klinge', ones(row,1)*1.5, ... % usw.
               'Kerblaenge_Anschw_lang', 0, ...  
               'Kerblaenge_Anschw_kurz', 0, ...
               'Kerblaenge_Anschw_mittel', 0, ...
               'Gesamt', 0, ...  
               'Cycles', 0, ...
               'F_min', 200, ...
               'F_max', 2000, ...
               'Lastverhaeltnis', 0.1, ...
               'Probenlaenge', 60.3, ...
               'Probendicke', 1.5, ...
               'Risslaenge', 0, ...
               'Korrekturfaktor', 0, ...
               'Korrekturfunktion', 0, ...
               'K_min', 0, ...
               'K_max', 0, ...
               'K_krit', 0, ...
               'delta_K', 0);
 
 
% Einleseschleife für:
% -> Kerblaenge_Anschw_lang
% -> Kerblaenge_Anschw_kurz
% -> Cycles
% n=1 bis n=num_pers
 
%num_prob = 1;
fprintf('Bitte die Daten von der Probe Nummer %g eingeben: \n', num_prob);
 
for n = 1:num_prob
    probe(n).Kerblaenge_Anschw_lang = input('Kerblaenge Anschwingen lang:');
    probe(n).Kerblaenge_Anschw_kurz = input('Kerblaenge Anschwingen kurz:');
    probe(n).Cycles = input('Cycles:');
    fprintf( '\n' );
end


[ Nachricht wurde editiert von gaussmath am 25.07.2013 16:16:01 ]</font
Edit: Fehler in Funktionskopf beseitigt
[ Nachricht wurde editiert von gaussmath am 25.07.2013 19:45:02 ]



  Profil  Quote  Link auf diesen Beitrag Link
physicist07
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 27.05.2011
Mitteilungen: 15
Aus: Österreich
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.10, vom Themenstarter, eingetragen 2013-07-25


Danke dir :)

Werde ich morgen gleich ausprobieren. Jetzt reichts mir mal für heute :)

Schönen Tag noch :)

LG



  Profil  Quote  Link auf diesen Beitrag Link
physicist07
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 27.05.2011
Mitteilungen: 15
Aus: Österreich
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.11, vom Themenstarter, eingetragen 2013-07-29


Hallo ich habe das jetzt mal ausprobiert, aber es tut sich gar nichts! Keine Fehlermeldung - nothing :/



  Profil  Quote  Link auf diesen Beitrag Link
gaussmath
Senior Letzter Besuch: im letzten Monat
Dabei seit: 16.06.2007
Mitteilungen: 9031
Aus: Hannover
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.12, eingetragen 2013-07-29


Gut, dann poste bitte mal den Code, wo die Funktion aufrufst und die Tabelle setzt. Hast du die Funktion angepasst? Poste auch die aktuelle Version.

Schau' bitte nach, wie die Tabelle heißt. Hast du das GUI mit guide erstellt?



  Profil  Quote  Link auf diesen Beitrag Link
physicist07
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 27.05.2011
Mitteilungen: 15
Aus: Österreich
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.13, vom Themenstarter, eingetragen 2013-07-29


Ja habe es mit guide erstellt und hier ist der Teil:

% --- Executes when entered data in editable cell(s) in uitable1.
function uitable1_CellEditCallback(hObject, eventdata, handles)
% hObject    handle to uitable1 (see GCBO)
% eventdata  structure with the following fields (see UITABLE)
%	Indices: row and column indices of the cell(s) edited
%	PreviousData: previous data for the cell(s) edited
%	EditData: string(s) entered by the user
%	NewData: EditData or its converted form set on the Data property. Empty if Data was not changed
%	Error: error string when failed to convert EditData to appropriate value for Data
% handles    structure with handles and user data (see GUIDATA)
function probe = probe_iden(num_prob,C)
[row,~] = size(C);
% probe_iden(num_prob)
 
%num_prob = input('Probennummer:');
 
% struct probe definieren
 
probe = struct('Probennummer', 0, ...
               'Messzeit', C(:,1), ...
               'Kraft', C(:,2), ...
               'Temperatur', C(:,3), ...
               'Umpoler', C(:,4), ...
               'Potential', C(:,5), ...
               'Video_Weg', C(:,6), ...
               'Weg_induk', C(:,7), ...
               'delta_A', C(:,8), ...
               'Weg_DMS', C(:,9), ...
               'Kerblaenge_Secotom', ones(row,1)*28.6, ...
               'Kerblaenge_Klinge', ones(row,1)*1.5, ...
               'Kerblaenge_Anschw_lang', 0, ...  
               'Kerblaenge_Anschw_kurz', 0, ...
               'Kerblaenge_Anschw_mittel', 0, ... 
               'Gesamt', 0, ...  
               'Cycles', 0, ...
               'F_min', 200, ...
               'F_max', 2000, ...
               'Lastverhaeltnis', 0.1, ...
               'Probenlaenge', 60.3, ...
               'Probendicke', 1.5, ...
               'Risslaenge', 0, ...
               'Korrekturfaktor', 0, ...
               'Korrekturfunktion', 0, ...
               'K_min', 0, ...
               'K_max', 0, ...
               'K_krit', 0, ...
               'delta_K', 0);
 
 
% Einleseschleife für:
% -> Kerblaenge_Anschw_lang
% -> Kerblaenge_Anschw_kurz
% -> Cycles
% n=1 bis n=num_pers
 
%num_prob = Probennummer;
%fprintf('Bitte die Daten von der Probe Nummer %g eingeben: \n', num_prob);
 
%for n = 1:num_prob
   % probe(n).Kerblaenge_Anschw_lang = input('Kerblaenge Anschwingen lang:');
   % probe(n).Kerblaenge_Anschw_kurz = input('Kerblaenge Anschwingen kurz:');
   % probe(n).Cycles = input('Cycles:');
   % fprintf( '\n' );
%end
 
probe = probe_iden(num_prob,C);
myUitable = handles.uitable1;
dataToShow = ['{probe.Messzeit}','{probe.Temperatur}'];
set(myUitable,'Data',dataToShow);



  Profil  Quote  Link auf diesen Beitrag Link
gaussmath
Senior Letzter Besuch: im letzten Monat
Dabei seit: 16.06.2007
Mitteilungen: 9031
Aus: Hannover
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.14, eingetragen 2013-07-29


Mach mal einen Breakpoint bei "set(myUitable,'Data',dataToShow);" und gib dann "dataToShow" aus über rechte Maustaste->evaluate.. aus. Was kommt raus?

Edit: Oder lass einfach das Semikolon am Zeilenende weg.
Edit1: Ich gehe davon aus, dass man das struct vor Übergabe an die Funktion definieren muss, dann in der Funktion mit Werten füllt und wieder zurück gibt.
[ Nachricht wurde editiert von gaussmath am 29.07.2013 15:19:09 ]



  Profil  Quote  Link auf diesen Beitrag Link
physicist07
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 27.05.2011
Mitteilungen: 15
Aus: Österreich
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.15, vom Themenstarter, eingetragen 2013-07-29


>> dataToShow = ['{probe.Messzeit}','{probe.Temperatur}']
 
dataToShow =
 
{probe.Messzeit}{probe.Temperatur}

das hier kommt raus, wenn ich es ausgeben lasse... wenn ich das semikolon entferne tut sich nichts



  Profil  Quote  Link auf diesen Beitrag Link
gaussmath
Senior Letzter Besuch: im letzten Monat
Dabei seit: 16.06.2007
Mitteilungen: 9031
Aus: Hannover
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.16, eingetragen 2013-07-29


OK, so geht es tatsächlich nicht:
Matlab
clc
 
C=rand(3,3)
filledProbe=structFunction(C)
['{filledProbe.Messzeit}','{filledProbe.Temperatur}']

Matlab
function filledProbe=structFunction(C)
 
	filledProbe = struct('Messzeit', C(:,1), ...
						'Temperatur', C(:,3));
 
end

Aber so:
Matlab
clc
 
C=rand(3,3)
filledProbe=structFunction(C);
[filledProbe.Messzeit,filledProbe.Temperatur]



  Profil  Quote  Link auf diesen Beitrag Link
gaussmath
Senior Letzter Besuch: im letzten Monat
Dabei seit: 16.06.2007
Mitteilungen: 9031
Aus: Hannover
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.17, eingetragen 2013-07-29


Wenn "dataToShow" aus unterschiedlichen Datentypen besteht, musst du mit Cell-Arrays arbeiten.



  Profil  Quote  Link auf diesen Beitrag Link
physicist07 hat die Antworten auf ihre/seine Frage gesehen.
Das Thema wurde von einem Senior oder Moderator abgehakt.
Neues Thema [Neues Thema]  Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2017 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]