|
Mischok |

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 06.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.06.2012, 20:56
Titel: Matrix downsamplen
|
 |
|
 |
|
Hi Matlab Gemeinde,
ich bin seit langem stiller leser des Forums und hab bis jetzt auch immer die Antworten aus anderen Threads zusammengekratzt doch leider hab ich jetzt ein kleines Problem bei dem ich nicht wirklich weiter komme.
Es geht um eine Matrix 1024x1024 die ich auf 100x100 runtersamplen will. Ich habe zwar schon einen Ansatz bin jedoch nicht ganz zufrieden damit.
Ich hab es jetzt so probiert, dass meine neue Matrix einfach nur jedes 10. Element in x- und jedes 10. Element in y-Richtung beinhaltet, jedoch ist das natürlich nicht ganz prickelnd, weil ich ja einfach Daten wegfallen lasse...
Ich habe da mehr an eine Möglichkeit gedacht, meine Matrix in Teilmatrizen zu unterteilen und aus dem Mittelwert dieser Matrizen das Element der neuen Matrix zu definieren...
also mein (falscher) Code lautet:
Dann hab ich durch abschneiden der enden zwar meine 100x100 Matrix aber das stimmt nicht so ganz...
Ich kenne den code "downsample" jedoch funktioniert er bei "double" nicht so ganz.
Was mir vorschwebt ist, dass ich meine Matrix in 10x10 Matrizen unterteile, aus diesen dann den "mean" value bestimmte und diesen dann als Element benutze...
Mit for-Schleifen bin ich nicht ganz so bewandert... Habe zwar einige Versuche gestartet aber hab kläglich versagt, da meine codes keinen Sinn gemacht haben.
Grüße
Mischok
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 06.06.2012, 21:52
Titel:
|
 |
Hallo,
das erste Problem sehe ich darin, dass das hier nicht "aufgeht". Wenn das erstmal gelöst ist:
Ich würde versuchen, die Matrix mit RESHAPE so zu transformieren, dass die Werte, über die der Mittelwert genommen werden soll, immer in einer Spalte stehen.
Alternativ kann man die Matrix mit MAT2CELL in ein Cell Array umwandeln, so dass jede Zelle den Bereich enthält, über den zu mitteln ist. Dann mit CELLFUN elementweise den Mittelwert berechnen und mit CELL2MAT wieder zurückwandeln.
Ein ganz anderer Ansatz wäre, sich mal IMRESIZE (aus Image Processing TB) anzusehen.
Grüße,
Harald
|
|
|
Mischok |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 06.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.06.2012, 17:47
Titel:
|
 |
Hi Harald,
die Idee hatte ich am Anfang auch, doch da bin ich an der "mean" Funktion gescheitert...
Was mir vorgeschwebt hat war ein Code im folgenden Format:
Dann hätte ich praktisch beide Matrizen in Vektorform gebracht. Jetzt fehlt mir aber noch der Teil, wo ich aus der Matrix Neu jeweils über 105 Elemente den "mean" berechne um daras dann EIN Element für die neue Matrix zu machen.
Das eigentliche Problem ist eigentlich, dass ich zwei verschiedene Datensätze habe: Die eine ist auf einer 100x100 Matrix und die andere auf einer 1024x1024 Matrix. Deswegen will ich die letztere auf die 100x100 verkleinern.
Die Funktion interp1 kenne ich auch (um die 100x100 auf 1024x1024) zu bringen. Jedoch komme ich mit der Handhabung der funktion nicht ganz klar.
Grüße
Mischok
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.06.2012, 21:31
Titel:
|
 |
Hallo,
wenn mean auf eine Matrix angewendet wird, wird es spaltenweise angewendet. Wie gesagt:
Ich würde versuchen, die Matrix mit RESHAPE so zu transformieren, dass die Werte, über die der Mittelwert genommen werden soll, immer in einer Spalte stehen.
Es müsste also eine Matrix mit 105 (warum auch immer genau 105) Zeilen sein.
Das Problem sehe ich in erster Linie darin, dass eine 1024x1024-Matrix nicht in 105 Zeilen umwandelbar ist.
INTERP1 halte ich hier für wenig zweckmäßig. Ich würde wenn, wie gesagt, IMRESIZE verwenden.
Grüße,
Harald
|
|
|
Mischok |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 06.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.06.2012, 21:43
Titel:
|
 |
Hi Harald,
ich werde mal deinen IMRESIZE Vorschlag versuchen. Es müsste also möglich sein das Bild einfach per IMRESIZE von 1024x1024 auf 100x100 runter zu skalieren?
Beste Grüße
Mischok
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.06.2012, 23:46
Titel:
|
 |
Hallo,
Ja, genau. Einfach mal nen Blick in die Doku werfen
Grüße,
Harald
|
|
|
Mischok |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 06.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.06.2012, 23:59
Titel:
|
 |
Yep hab ich schon... also auf den ersten Blick scheint es genau das zu sein, was ich gesucht habe - aber ich bin immer so ein skeptischer Mensch... ich werd es morgen direkt mal ausprobieren und hier berichten
Vielen Dank nochmal für den Hinweis
Grüße
Mischok
|
|
|
Mischok |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 06.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.06.2012, 14:15
Titel:
|
 |
Hat wuderbar geklappt
Danke Harald
|
|
|
D. Grimm |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.05.2013, 17:03
Titel: Lösung ohne Toolbox
|
 |
Hallo,
hatte genau das gleiche Thema. Hier der Code fuer einen 3x3 downsampling...
Hierbei ist dz die "grosse" Matrix, new_dz_3x3 die neue "kleine". dim_ sind die urspruenglichen Matrix-Dimensionen...
Gruss, D. Grimm
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 16.05.2013, 09:34
Titel: Re: Lösung ohne Toolbox
|
 |
Hallo D. Grimm,
Für große Arrays ist die vektorisierte Fassung nennenswert schneller:
(Bitte testen, da ich gerade kein Matlab zur Verfügung habe)
Gruß, Jan
|
|
|
|
|
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.
|
|