Die Mathe-Redaktion - 25.11.2017 06:32 - 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 299 Gäste und 2 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 

Antworte auf:  Daten in uitable darstellen von physicist07
Forum:  Matlab, moderiert von: mire2 gaussmath

[Zur Forum-Gliederung] [Wie man Fragen beantwortet]

  Alle registrierten Mitglieder können Mitteilungen schreiben.
Benutzername:
Passwort:
Nachricht-Icon:                     
                    
                  
Nachricht:


 

Erledigt J


Eingabehilfen (JavaScript): [Link extern intern] [$$] [MathML?]
[fed-Bereich] [LaTeX-inline] [LaTeX-display] [hide-Bereich] [Quelltext [num.]][?]
 Zeige Vorschau      Schreibe im fedgeoFormeleditor oder mit Latex.

Wähle Smilies für Deine Nachricht: :-) :-( :-D ;-) :-0 8-) :-? :-P :-|
Optionen: Deaktiviere HTML in dieser Nachricht
Deaktiviere Smilies in dieser Nachricht
Zeige die Signatur (Kann in 'Mein Profil' editiert werden.)
    [Abbrechen]
 
Beachte bitte die [Forumregeln]


Themenübersicht
gaussmath
Senior
Dabei seit: 16.06.2007
Mitteilungen: 9031
Herkunft: Hannover
 Beitrag No.17, eingetragen 2013-07-29 16:14    [Diesen Beitrag zitieren]

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


gaussmath
Senior
Dabei seit: 16.06.2007
Mitteilungen: 9031
Herkunft: Hannover
 Beitrag No.16, eingetragen 2013-07-29 16:05    [Diesen Beitrag zitieren]

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]


physicist07
Junior
Dabei seit: 27.05.2011
Mitteilungen: 15
Herkunft: Österreich
 Beitrag No.15, eingetragen 2013-07-29 15:24    [Diesen Beitrag zitieren]

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


gaussmath
Senior
Dabei seit: 16.06.2007
Mitteilungen: 9031
Herkunft: Hannover
 Beitrag No.14, eingetragen 2013-07-29 15:09    [Diesen Beitrag zitieren]

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 ]


physicist07
Junior
Dabei seit: 27.05.2011
Mitteilungen: 15
Herkunft: Österreich
 Beitrag No.13, eingetragen 2013-07-29 14:29    [Diesen Beitrag zitieren]

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);


gaussmath
Senior
Dabei seit: 16.06.2007
Mitteilungen: 9031
Herkunft: Hannover
 Beitrag No.12, eingetragen 2013-07-29 14:14    [Diesen Beitrag zitieren]

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?


physicist07
Junior
Dabei seit: 27.05.2011
Mitteilungen: 15
Herkunft: Österreich
 Beitrag No.11, eingetragen 2013-07-29 14:12    [Diesen Beitrag zitieren]

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


physicist07
Junior
Dabei seit: 27.05.2011
Mitteilungen: 15
Herkunft: Österreich
 Beitrag No.10, eingetragen 2013-07-25 16:17    [Diesen Beitrag zitieren]

Danke dir :)

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

Schönen Tag noch :)

LG


gaussmath
Senior
Dabei seit: 16.06.2007
Mitteilungen: 9031
Herkunft: Hannover
 Beitrag No.9, eingetragen 2013-07-25 16:13    [Diesen Beitrag zitieren]

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 ]


physicist07
Junior
Dabei seit: 27.05.2011
Mitteilungen: 15
Herkunft: Österreich
 Beitrag No.8, eingetragen 2013-07-25 15:55    [Diesen Beitrag zitieren]

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


gaussmath
Senior
Dabei seit: 16.06.2007
Mitteilungen: 9031
Herkunft: Hannover
 Beitrag No.7, eingetragen 2013-07-25 15:50    [Diesen Beitrag zitieren]

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?


physicist07
Junior
Dabei seit: 27.05.2011
Mitteilungen: 15
Herkunft: Österreich
 Beitrag No.6, eingetragen 2013-07-25 15:31    [Diesen Beitrag zitieren]

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


gaussmath
Senior
Dabei seit: 16.06.2007
Mitteilungen: 9031
Herkunft: Hannover
 Beitrag No.5, eingetragen 2013-07-25 15:27    [Diesen Beitrag zitieren]

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


physicist07
Junior
Dabei seit: 27.05.2011
Mitteilungen: 15
Herkunft: Österreich
 Beitrag No.4, eingetragen 2013-07-25 15:23    [Diesen Beitrag zitieren]

Nein funktioniert leider nicht :(


gaussmath
Senior
Dabei seit: 16.06.2007
Mitteilungen: 9031
Herkunft: Hannover
 Beitrag No.3, eingetragen 2013-07-25 15:05    [Diesen Beitrag zitieren]

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 ]


physicist07
Junior
Dabei seit: 27.05.2011
Mitteilungen: 15
Herkunft: Österreich
 Beitrag No.2, eingetragen 2013-07-25 15:00    [Diesen Beitrag zitieren]

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


gaussmath
Senior
Dabei seit: 16.06.2007
Mitteilungen: 9031
Herkunft: Hannover
 Beitrag No.1, eingetragen 2013-07-25 14:55    [Diesen Beitrag zitieren]

Hallo,

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

Grüße, Marc


physicist07
Junior
Dabei seit: 27.05.2011
Mitteilungen: 15
Herkunft: Österreich
 Themenstart: 2013-07-25 14:52    [Diesen Beitrag zitieren]

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


 
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]