|
|
Fließkommazahlen in Matrix, Spalteneinträge addieren |
|
Stutzi |

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 23.08.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.08.2008, 21:31
Titel: Fließkommazahlen in Matrix, Spalteneinträge addieren
|
 |
Hallo,
ich verzweifel langsam.
Bin noch frisch am Matlab programmieren.
Nun habe ich eine Matrix eingelesen und möchte die Spalteneinträge addieren und diese anschließend durch die Anzahl der Zeilen teilen.
Dazu wollte ich zwei verschachtelte Schleifen benutzen:
Das Ergebnis stimmt aber nicht.
Was ist daran falsch. Wäre euch sehr verbunden, da ich ehct wahnsinnig werde mit so einem einfach Porblem.
Edit: Code-Umgebung repariert.
mfg nschlange
|
|
|
|
|
nschlange |

Ehrenmitglied
|
 |
Beiträge: 1.320
|
 |
|
 |
Anmeldedatum: 06.09.07
|
 |
|
 |
Wohnort: NRW
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 23.08.2008, 22:54
Titel:
|
 |
Hi,
erstmal kannst Du das i+1 und m+1 weglassen, das hat hier keine Funktion. Wenn Du das Semikolon weglassen würdest, bekämst Du nur das aktuelle i bzw. m +1 angezeigt. Die Inkrementierung der Variablen um 1 je Durchlauf ist schon implizit im Schleifenkopf angegeben. Für ein anderes Inkrement kannst Du schreiben:
Jetzt würde k in jedem Durchlauf um 2 erhöht.
Dann machst Du
i und m sind ja feste Werte, d.h.
berechnet immer nur die Summe eines Elementes der Matrix r.
Du legst hier nur eine Kopie von r in Summe ab.
Und hier
greifst Du auf eine Matrix (Summe hat ja zwei Dimensionen) mit nur einem Index zu, das bedeutet 'linear indexing'. Sieh Dir das mal in der Hilfe an.
Edit: Rechtschreibfehler...
_________________
Viele Grüße
nschlange
"Chuck Norris ejakuliert fluessigen Stahl!"
Zuletzt bearbeitet von nschlange am 24.08.2008, 11:14, insgesamt 2-mal bearbeitet
|
|
|
Stutzi |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 23.08.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.08.2008, 10:01
Titel:
|
 |
Moin nschlange,
danke für die schnelle Antwort und Analyse.
Ich habe nun einen anderen weg ausprobiert, aber bekomme für mein Matrix (170 Zeilen und 30 Spalten) teilweise Inf Lösungen heraus.
Woran kann das liegen? In der Matrix sind keine NaN enthalten.
Viele Grüße,
Stutzi
|
|
|
nschlange |

Ehrenmitglied
|
 |
Beiträge: 1.320
|
 |
|
 |
Anmeldedatum: 06.09.07
|
 |
|
 |
Wohnort: NRW
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 24.08.2008, 10:15
Titel:
|
 |
Hi,
wenn in r NaN's enthalten wären, dann auch im Ergebnis.
Sind in r vielleicht Inf's? Von welcher Größenordnung sind die Zahlen in r?
Das könnte auch passieren, wenn B = 0 wäre, aber nicht in diesem Codeschnipsel.
_________________
Viele Grüße
nschlange
"Chuck Norris ejakuliert fluessigen Stahl!"
|
|
|
Stutzi |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 23.08.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.08.2008, 10:34
Titel:
|
 |
Hi,
in r sind weder NaN noch Inf enthalten.
Ich musste anfangs in der eingelesenen Matrix x die NaNs in Nullen ändern. Nun habe ich daraus die Matrix r gemacht, in der anstelle der NaNs Nullen stehen.
Beispiel Spalte 1:
Diese Spalte hat 170 Einträge, wovon 24 am Anfang Nullen sind.
Wende ich size(r) nur auf diese Spalte an, sagt er mir, dass ich 146 Einträge (B) und eine Spalte habe.
Nehme ich nun meinen Codeschnipsel, dann kommt auch das richtige Ergebnis heraus und es entsteht kein Inf.
Nun erweitere ich um die zweite Spalte.
Bei jetziger Anwendung des Codes ist das Ergebnis für Spalte 1 Inf.
Muss an der Summenbildung liegen:
Oder am B, da das für die Spalten unterschiedlich ist. Macht das Sinn?
Viele Grüße,
Stutzi
|
|
|
nschlange |

Ehrenmitglied
|
 |
Beiträge: 1.320
|
 |
|
 |
Anmeldedatum: 06.09.07
|
 |
|
 |
Wohnort: NRW
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 24.08.2008, 10:49
Titel:
|
 |
Kannst Du mal ein Beispiel geben, wo das Auftritt?
klappt.
Das gleiche Ergebnis bekommst Du übrigens auch so:
_________________
Viele Grüße
nschlange
"Chuck Norris ejakuliert fluessigen Stahl!"
|
|
|
Stutzi |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 23.08.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.08.2008, 11:05
Titel:
|
 |
Hi nschlange,
da meine Matrix so groß ist, habe ich nicht sofort gesehen, dass in der Spalte, in der die Nullen sind, der letzte Wert vor den normalen Einträgen ein Inf ist. Und das wird der Grund sein, warum am Ende ein Inf steht.
Sorry, aber das ist mir vorher nicht aufgefallen.
Viele Grüße Stutzi
|
|
|
nschlange |

Ehrenmitglied
|
 |
Beiträge: 1.320
|
 |
|
 |
Anmeldedatum: 06.09.07
|
 |
|
 |
Wohnort: NRW
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 24.08.2008, 11:09
Titel:
|
 |
Hey,
dafür gibt es die Befehle
Damit kannst Du bequem auf diese Werte prüfen und sie gegebenenfalls ersetzen. Dann wird auch keiner übersehen.
_________________
Viele Grüße
nschlange
"Chuck Norris ejakuliert fluessigen Stahl!"
|
|
|
Stutzi |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 23.08.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.08.2008, 11:31
Titel:
|
 |
Hey,
danke für den Tipp.
isnan habe ich bereits benutzt. isinf kann ich durch deinen Tipp genauso gut ausnutzen.
Nun funktioniert es so, wie ich es will.
Nochmal danke und bis zur nächsten Schwierigkeit.
|
|
|
|
|
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.
|
|