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

Arrays in einem Fenster ausgeben

 

code88
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 91
Anmeldedatum: 06.02.08
Wohnort: Meinisberg
Version: MATLAB Version 7.8.0.347 (R2009a)
     Beitrag Verfasst am: 23.04.2008, 09:44     Titel: Arrays in einem Fenster ausgeben
  Antworten mit Zitat      
Ich hab folgendes Problem:
Ich erzeuge in Matlab ein Array mit folgender Struktur:

Werte=[1 2 3 4 ...]
und die Titel (Namen dazu)
titel={titel1 titel2 ...}

Nun möchte ich in einem Fenster diese darstellen.

Womöglich mit dem Befehl msgbox bin mir jedoch nicht sicher, ob es der richtige für idiese Problem ist.

Im Fenster sollte es dann folgendermasse ausssehen:

Werte bei Frequenz: Freq titel1: 1 titel2: 2 ...
(Freq wurde vorher durch inputdlg eingelesen)
Das Problem ist wahrscheinlich, dass Werte Zahlen sind und titel characters.
Kann mir da jemand helfen?

Code:
prompt = {'Frequenz Hz:'};
dlg_title = 'Frequenz eingeben bei der die Werte angezeigt werden sollen';
num_lines = 1;
def = {'500'};
Freq = inputdlg(prompt,dlg_title,num_lines,def)%Frequenzbereich einlesen
Freq = str2num(char(Freq));%cell array Frequenzbereich in Nummer (Matrix, Vektor) konvertieren


%Daten öffnen
[fileDaten,pathDaten] = uigetfile('*.mat', 'Daten zum öffnen auswählen'); % öffnet ein Fenster um das Datenfile auszuwählen fileDaten = Name des Files pathDaten = Pfad des Files
Datenfile=strcat(pathDaten, fileDaten); %Filename und Pfad aneinnanderreihen      
load(Datenfile);%Matrix und titel laden indem das Datenfile geladen wird

if fileDaten == 0
        warning('Datei nicht gefunden') ;%überprüfen ob File vorhanden
    end;

valuei=0;
i=0;
while valuei ~= Freq%Position der minimalen Frequenz finden    
    i=i+1;
    valuei=Matrix(i,1);
    Ausgabe=Matrix(i,:);
end



 for j=1:length(titel)
     B(j)=strcat(Ausgabe(j),titel{j});
     j=j+1;
 end
 A=msgbox(B)
Private Nachricht senden Benutzer-Profile anzeigen


tompie
Forum-Guru

Forum-Guru


Beiträge: 260
Anmeldedatum: 19.09.07
Wohnort: München
Version: immer alles
     Beitrag Verfasst am: 23.04.2008, 09:57     Titel:
  Antworten mit Zitat      
Hallo,

Du mußt auf jeden Fall die Zahlen in "Ausgabe" mit
Code:

in Strings wandeln. Diese Strings kannst Du dann mit den Strings aus "titel" zusammenhängen. An msgbox muß man als Argument letztendlich ein cell array schicken nach dem Muster

Code:
msgbox({'Zeile1','Zeile2'})


Gruß tompie
Private Nachricht senden Benutzer-Profile anzeigen
 
code88
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 91
Anmeldedatum: 06.02.08
Wohnort: Meinisberg
Version: MATLAB Version 7.8.0.347 (R2009a)
     Beitrag Verfasst am: 23.04.2008, 10:46     Titel:
  Antworten mit Zitat      
Danke erst mal für die Hilfe.
Nun ist das Fenster von msgbox etwas zu klein.
Ich habe aber keine Parameter gefunden, wie man die Fenstergrösse und Schrif definieren kann.
Wer hat da eine Idee?

Und leider wird beim Konvertieren von
Code:
Ausgabe=num2str(Ausgabe);

nur die erste Ziffer der Zahl in den String geschrieben...

Kann mir jemand weiterhelfen?
Private Nachricht senden Benutzer-Profile anzeigen
 
tompie
Forum-Guru

Forum-Guru


Beiträge: 260
Anmeldedatum: 19.09.07
Wohnort: München
Version: immer alles
     Beitrag Verfasst am: 23.04.2008, 13:24     Titel:
  Antworten mit Zitat      
Hallo,

so musst Du das machen:

Code:
for j=1:length(titel)
     B{j}=[num2str(Ausgabe(j)),titel{j}];
 end
 A=msgbox(B)



Was sollte eigentlich das j=j+1 in Deinem Code? Das macht ja der for-Befehl schon automatisch.

Gruß tompie
Private Nachricht senden Benutzer-Profile anzeigen
 
code88
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 91
Anmeldedatum: 06.02.08
Wohnort: Meinisberg
Version: MATLAB Version 7.8.0.347 (R2009a)
     Beitrag Verfasst am: 23.04.2008, 13:47     Titel:
  Antworten mit Zitat      
Oh wusste ich nicht, dass j=j+1 automatisch durch Matlab gemacht wird.

Danke für den Tipp

Weisst du auch, wie ich die Fenstergrösse und Schriftgrösse einstellen kann?
Oder ist das bei msgbox nicht möglich?
Private Nachricht senden Benutzer-Profile anzeigen
 
tompie
Forum-Guru

Forum-Guru


Beiträge: 260
Anmeldedatum: 19.09.07
Wohnort: München
Version: immer alles
     Beitrag Verfasst am: 23.04.2008, 16:56     Titel:
  Antworten mit Zitat      
Hallo,

in A hast Du ja bereits den figure-handle der Message-Box. Mit

Code:
set(A,'Position',[xpos ypos breite hoehe])


kannst Du die Gesamtgröße einstellen.

Mit

Code:
h1 = findobj(A,'Tag','OKButton')


bekommst Du den handle des OK-Buttons, und mit

Code:
h2 = findobj(A,'Tag','MessageBox')


den handle des Textes. Du solltest dann also mit

Code:
set(h2,'FontSize',fs)


auch die Fontgrösse einstellen können (habe ich allerdings noch nicht getestet).

Gruß tompie
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.