www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Matlab" - sumsum
sumsum < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

sumsum: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 20:37 Sa 03.02.2007
Autor: Bastiane

Hallo!

Ich habe hier eine Musterlösung zu einer Aufgabe, wo ich einen Teil draus nicht verstehe. Und zwar steht dort:

dist=zeros(256,1);
for ind=0:255
  dist(ind+1)=sum(sum(I1==ind));
end

In der ersten Zeile wird also quasi ein Spaltenvektor der "Länge" 256 mit lauter Nullen erzeugt. Und die for-Schleife läuft dann wohl durch alle diese Elemente durch (warum steht da "ind"? Man könnte doch auch genauso einfach "i" schreiben, oder?). So, aber was bitte schön, wird dort gemacht? Was bedeutet "sumsum"? Das konnte ich in der Hilfe von Matlab leider nicht finden. Und "==" scheint wohl auch dort der Vergleichsoperator zu sein, aber was genau wird dort verglichen? I1 ist doch ein Bild (das wurde in einer Aufgabe vorher mal an I1 zugewiesen) und ind ist doch nur der Laufindex der Schleife, oder? Und was wird dann summiert??

Falls es hilft, das ist der Anfang von der Histogrammegalisierung...

Viele Grüße
Bastiane
[cap]


        
Bezug
sumsum: Antwort
Status: (Antwort) fertig Status 
Datum: 00:33 So 04.02.2007
Autor: Martin243

Hallo Bastiane,

da bin ich (hehe). Dann wollen wir mal:

> In der ersten Zeile wird also quasi ein Spaltenvektor der "Länge" 256 mit lauter Nullen erzeugt.

Genau! Das wäre aber gar nicht nötig, weil ja gleich alle Einträge dieses Vektors beschrieben werden. Man kann diese erste Zeile also getrost weglassen, falls die Variable dist noch nicht benutzt wurde. Sonst tut es auch ein "clear dist;".


> Und die for-Schleife läuft dann wohl durch alle diese Elemente durch (warum steht da "ind"? Man könnte doch auch genauso einfach "i" schreiben, oder?).

i ist genauso gut. ind soll vielleicht an Index erinnern, ein sprechenderer Name also? Ansonsten könnte die Variable auch alte_sommerreifen heißen.


> So, aber was bitte schön, wird dort gemacht? Was bedeutet "sumsum"?
> Das konnte ich in der Hilfe von Matlab leider nicht finden.

Da steht ja nicht "sumsum", sondern zweimal "sum". Das sollte in der Hilfe stehen, aber egal: Das Ganze wird auf eine Matrix angewandt, die weiter unten erklärt wird. Das erste sum summiert entlang der Spalten, bildet also einen Zeilenvektor, dessen Einträge die Summen der einzelnen Spalten enthalten. Das zweite (äußere) sum summiert dann diese Summen auf, so dass am Ende ein Skalar dasteht.


> Und "==" scheint wohl auch dort der Vergleichsoperator zu sein, aber was genau wird dort verglichen? I1 ist doch ein Bild (das wurde in einer Aufgabe vorher mal an I1 zugewiesen) und ind ist doch nur der Laufindex der Schleife, oder? Und was wird dann summiert??

Alles richtig! "==" vergleicht und liefert 1 oder 0.
In Matlab gibt es die (sehr nützliche) Besonderheit, dass man Vektoren und Matrizen (auch mehrdimensionale Arrays) mit Skalaren verknüpfen kann. Dann wird jeder Eintrag der Matrix mit diesem Skalar verknüpft. Das Ergebnis ist dann eine Matrix derselben Größe, deren Einträge die Ergebnisse der einzelnen Verknüpfungen sind.
Beim Vergleich ist das Ergebnis eine Matrix aus Einsen und Nullen. An den Stellen mit den Einsen wahr der Vergleich wahr, sonst falsch.
Wenn du also eine Grauwertmatrix I1 mit einem Skalar ind vegleichst, bekommst du eine Matrix, die Einsen an den Stellen enthält, die genau den Grauwert ind haben.
Warum summiert man diese Stellen auf? Das ist nichts anderes als Zählen, denn das Summieren von Einsen ist ja dasselbe, als würde man die Stellen mit diesem Grauwert zählen. Mathematisch wäre das dann:
[mm] $\sum_{(m,n)\in\{1,...,M\}\times\{1,...,N\}, I1(m,n)=ind}1$, [/mm]
zumindest haben wir diese Schreibweise mehrmals bemüht.


Mein Tipp:
Nimm dir eine kleine Bildmatrix, z.B.:
im = floor(10*rand(10));

und schau dir folgende Ergebnisse an:
im == 5
sum(im == 5)
sum(sum(im == 5))


So, ich hoffe, das hilft etwas...


Gruß
Martin

Bezug
                
Bezug
sumsum: besser spät als nie ;-)
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 22:44 Sa 17.02.2007
Autor: Bastiane

Hallo Martin!

Ist zwar seeehr spät, aber ich musste noch für eine andere Klausur lernen und habe mich dann in Computer Vision auch erstmal auf die "Theorie" konzentriert. Aber jetzt brauchte ich ein bisschen Abwechslung, und bevor ich irgendeinen Blödsinn mache, hab' ich mich dann mal wieder an Matlab gesetzt. :-)

Wollte mich noch für diese schöne Antwort bedanken. Habe jetzt verstanden, was dort passiert und somit auch den Rest der Musterlösung. Vielen Dank. [sunny]

Viele Grüße
Bastiane
[cap]

Bezug
                        
Bezug
sumsum: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 12:14 So 18.02.2007
Autor: Martin243

Hallo,

eine kleine Anmerkung, wo wir schon dabei sind:
Das Erzeugen der "zeros" am Anfang beschleunigt die ganze Sache. Dadurch wird sofort der nötige Speicherplatz alloziert, es muss also der Vektor nicht jedesmal erweitert werden. Also vielleicht doch lieber nicht weglassen...


Gruß
Martin

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorhilfe.de