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

Beispiel funktioniert-Real nicht.

 

LG90
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 06.12.16
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 06.12.2016, 11:29     Titel: Beispiel funktioniert-Real nicht.
  Antworten mit Zitat      
Hallo zusammen,

bin ein absoluter Anfänger im programmieren.
Mach das meistens so: Probiere und schreibe mein Code an einem Beispiel und wenn es läuft setze ich es dann in das gesamt Konstrukt ein.

Nun zur Aufgabe:
Ich möchte ein Signal wandeln und habe mir folgenden Code ausgedacht der auch funktioniert (im Beispiel)
Finde die stelle in B d.h. speichere die zeile und spalte zu und finde das Signal an der gleichen stelle der Umwandlungsmatrix.

Code:
   
    x=[0.501 1.258 2.060 2.862 3.663 4.463];
    y=[0.1 2 4 6 8 10];

    x_r = min(x):0.0001:max(x);
    y_r = interp1(x,y,x_r);
    B = [0.8666 0.8766 0.9664];
       
    for counter = 1 : 3
               
            [r,c]= find(x_r == B (counter));
            p_val(counter)  = y_r(r,c);
    end
 


Nun, was sich bei der Implementierung in den andere Matlab-Konstrukt ändert ist B. Dieser wird auch in einem Array eingelesen und besitzt auch die gleiche Größe und hier am Beispiel die gleichen werte(Inhalt)!
Anders als im Beispiel wird im anderen Konstrukt also in der Realität jedoch Zelle und reihe nicht gefunden und ich weiß nicht warum!

In der Workspace wird jedoch angezeigt dass
r=1x0
analog das gleiche für c.

Wüsste einer von euch, woran das liegen könnte?

Vielen Dank!

LG90
Private Nachricht senden Benutzer-Profile anzeigen


LG90
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 06.12.16
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 06.12.2016, 12:14     Titel:
  Antworten mit Zitat      
Update:

Bin derzeit noch an der Fehlersuche:

wenn ich für B statt den oben genannten werten:

Code:
B =[0.980 1.931 2.945];
übergebe dann funktioniert der Code nicht!

Code:
In an assignment  A(:) = B, the number of elements in A and B must be the same.

Error in change2 (line 16)
    p_val(counter)  = y_r(r,c);
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: 06.12.2016, 12:50     Titel: Re: Beispiel funktioniert-Real nicht.
  Antworten mit Zitat      
Hallo LG90,

Das ist wohl ein weiterer Fall, bei dem die numerische Repräsentation von Zahlen zu unerwarteten Ergebnissen führt.
Code:
find((0:0.1:1) == 0.3)

Es wird nichts gefunden. Das liegt daran, das in Matlab (sowieo üblicherweise) Dezimal-Zahlen binär gespeichert werden nach dem IEEE754-Standard. Es gibt dabei nur eine begrenzte Genauigkeit von ets 16 Dezimal-Stellen. Die meisten Dezimal-Zahlen haben aber keine exakte Darstellung im Binär-System (und umgekehrt auch), so dass die Summe vom 0.1+0.1+0.1 nicht 0.3 ergibt. Das nennt sich Rundungs-"Fehler", aber es ist kein Fehler im üblichen Sinn.

Beim Vergleich mit Dezimal-Zahlöen benötigt man deshalb immer eine gewisse Toleranz. Für Dein Beispiel macht das ismembertol serh gut.

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.