|
|
Einlesen und ploten von Daten |
|
gamma |
Forum-Anfänger
|
|
Beiträge: 32
|
|
|
|
Anmeldedatum: 03.05.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.05.2017, 18:15
Titel: Einlesen und ploten von Daten
|
|
Hallo goMatlab Forum, ich bräuchte mal wieder eure Hilfe!
Im Anhang befindet sich meine Aufgabe bei der ich etwas Hilfe nötig hätte! Schon beim einlesen der Daten hab ich das Problem, dass ich nicht weiß wie ich auf die einzelnen Elemente meiner Struktur zurückgreife. Ich finde zwar Beschreibungen dazu, jedoch weiß ich ja nicht wie mein Feld heißt.
Kann mir also jemand für den Anfang sagen wie ich auf einzelnen Elemente meiner Struktur zugreifen kann und wie ich diese im weiteren Sinne zu einem Vektor mache? Danke schon mal!
Beschreibung: |
|
Download |
Dateiname: |
Screenshot (5).png |
Dateigröße: |
236.63 KB |
Heruntergeladen: |
346 mal |
Beschreibung: |
|
Download |
Dateiname: |
Data_Assignment6.mat |
Dateigröße: |
3.96 KB |
Heruntergeladen: |
310 mal |
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 13.05.2017, 21:04
Titel:
|
|
Hallo,
liefert keine Struktur, sondern einen "ganz normalen" Double Vektor.
Insofern ist mir nicht klar, wo das Problem liegt.
Grüße,
Harald
|
|
|
gamma |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 32
|
|
|
|
Anmeldedatum: 03.05.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.05.2017, 01:05
Titel:
|
|
Was mich verwirrt ist das ich die Meldung
Zitat: |
x =
struct with fields:
x: [1×500 double] |
zurück bekomme wennn ich die daten mit load einlese. Außerdem kann ich nicht auf die einzelnen Elemente des Vektors zugreifen denn
liefert mir die Fehlermeldung
Zitat: |
Index exceeds matrix dimensions. |
. Wo liegt mein Fehler?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 14.05.2017, 08:30
Titel:
|
|
Hallo,
das einfachste ist, wenn du das "x = " weglässt (Vorschläge bitte auch ausprobieren!).
Wenn du die Daten unbedingt in eine Struktur laden willst, dann ginge das so:
Grüße,
Harald
|
|
|
gamma |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 32
|
|
|
|
Anmeldedatum: 03.05.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.05.2017, 11:06
Titel:
|
|
Am liebsten wäre es mir ja wenn ich die Daten als Vektor hätte aber ich weiß eben nicht wie ich das bewerkstellige! Wenn ich das "x=" weglasse habe ich das Problem, dass ich nicht weiß wie ich auf meine Daten zugreifen kann die sich im Workspace befinden. Also wie ich diese Daten dann anschließend in meiner Summe weiter verarbeiten kann!
Ich habe deshalb einmal mit der Struktur weiter gearbeitet aber wäre dir sehr dankbar wenn du mir sagen könntest wie ich sie als Vektor einlese.
Desweiteren habe ich ein Problem mit dem plotten
. Ich denke es ist klar wie ich versuche vorzugehen(ansonsten kommentiere ich auch gerne meinen code). Ich bekomme die Fehlermeldung
Zitat: |
Error using plot
Vectors must be the same length |
Ich denke das meine Summe nicht richtig ist weil ich nur 441 Werte bekomme was mir viel zu wenig erscheint für 500 x-Werte und 7 verschiedene m bzw 3 verschiedene s Werte.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 14.05.2017, 18:41
Titel:
|
|
Hallo,
Zitat: |
Am liebsten wäre es mir ja wenn ich die Daten als Vektor hätte aber ich weiß eben nicht wie ich das bewerkstellige! |
So, wie ich es dir geschrieben habe.
Zitat: |
Wenn ich das "x=" weglasse habe ich das Problem, dass ich nicht weiß wie ich auf meine Daten zugreifen kann die sich im Workspace befinden. |
x ist dann direkt im Workspace, und du kannst "ganz normal" damit arbeiten.
Statt
n = size(x)
solltest du
n = length(x)
verwenden.
Zitat: |
Error using plot
Vectors must be the same length |
Ist die Fehlermeldung wirklich so verwunderlich? Du versuchst eine Matrix auf die x- und einen Wert auf die y-Achse zu plotten.
Zitat: |
Ich denke das meine Summe nicht richtig |
Welche Summe denn? Da ist nirgends eine Aufsummierung von irgendetwas in deinem Code.
Grüße,
Harald
|
|
|
gamma |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 32
|
|
|
|
Anmeldedatum: 03.05.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.05.2017, 10:43
Titel:
|
|
Danke das hat mir schon mal geholfen. Warum aber kann ich ganz normal mit x arbeiten wenn ich vorher nicht x definiert habe? Würde das mit jeder Variable gehen?
Ich habe jetzt zumindest eine Summe:
Stimmt der plot jetz so? Bekomme zwar eine Graphik aber bin mir nicht sicher ob die so stimmt. Als nächstes muss ich die Funktion maximieren. Das müsste mit der negativen Funktion fminbnd gehen.
Ich bekomme die Fehlermeldung
Zitat: |
Error using fcnchk (line 106)
FUN must be a function, a valid character vector expression, or an inline function object.
Error in fminbnd (line 191)
funfcn = fcnchk(funfcn,length(varargin)); |
Was mach ich falsch? Kann es sein das ich eine Funktion mit einem function handle übergeben muss? Wenn ja, wie? Meine versuche in diese Richtung haben leider nicht funktioniert.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 15.05.2017, 15:26
Titel:
|
|
Hallo,
du summierst in deinem Code über einen Wert. Werte die Funktion doch vektorisiert für alle x auf einmal auf und summiere dann das. Vor allem aber überschreibst du den Plot in jedem Schritt.
Zur Optimierung:
Wenn du m und s anpassen willst, brauchst du fminsearch oder fmincon statt fminbnd.
Zitat: |
Kann es sein das ich eine Funktion mit einem function handle übergeben muss? |
Ja.
Bitte die Doku und vor allem die Beispiele zu den genannten Funktionen durchgehen. Du musst dabei ggf. m und s zu einem Vektor zusammenfassen.
Zitat: |
Meine versuche in diese Richtung haben leider nicht funktioniert. |
Bitte poste deine Versuche, damit man dir bei der Fehlersuche helfen kann.
Grüße,
Harald
|
|
|
gamma |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 32
|
|
|
|
Anmeldedatum: 03.05.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.05.2017, 16:11
Titel:
|
|
Ich bekomme folgende Fehlermeldung
Zitat: |
Nonscalar arrays of function handles are not allowed; use cell arrays instead.
fun(m,s) = @(x) sum(log10(1./(pi*s*((1+x-m).^2)/s^2))) |
für den Code
Offensichtlich verstehe ich die function handle Funktion noch nicht ganz! Natürlcih hab ich mir schon was dazu angeschaut aber mir ist nicht ganz klar wie sie funktioniert!
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 15.05.2017, 17:01
Titel:
|
|
Hallo,
warum nutzt du Function Handles denn für den Teil, für den ich dir eine funktionierende Lösung geschickt habe, statt für die Optimierung?
Die Fehlermeldungen sind an sich selbsterklärend.
Du hattest übrigens auch noch Fehler in der Klammernsetzung der Funktion.
Grüße,
Harald
|
|
|
gamma |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 32
|
|
|
|
Anmeldedatum: 03.05.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.05.2017, 08:16
Titel:
|
|
Danke für die Hilfe. Es funktioniert jetzt!
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|