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

Matrix Interpolieren

 

ptapolo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.08.2011, 13:16     Titel: Matrix Interpolieren
  Antworten mit Zitat      
Hi,

kann mir wer eine schnelle und einfache möglichkeit verraten, aus einer Messwert-Matrix mit egal wie vielen Spalten und Zeilen, jedoch kleiner als 100, eine 100x100 Matrix zu machen? Gibt es da Funktionen, die meinetwegen erst alle Spalten durchlaufen und durch Interpolation und Approximation mir jeweils 100 Stützstellen (Werte) ausgeben und dann das Ganze in den Zeilen...

Grüße

Mark


Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.08.2011, 13:43     Titel:
  Antworten mit Zitat      
Hi,
könnte man z.B. so machen:

Code:


A=rand(50,50) % deine Daten,gehen auch andere Matrixgrößen
[xi,yi]=meshgrid(linspace(1,size(A,2),100),linspace(1,size(A,1),100))
zi=interp2(A,xi,yi); % = Ergebnis

 


und ein kleines Beispiel:
Code:

A=imread('cameraman.tif');
figure,imshow(A);  % Orginalbild, 256*256
[xi,yi]=meshgrid(linspace(1,size(A,2),100),linspace(1,size(A,1),100))
zi=interp2(double(A),xi,yi);
figure,imshow(uint8(zi));  % auf 100*100 verkleinertes Bild

 
 
ptapolo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.08.2011, 16:39     Titel:
  Antworten mit Zitat      
Wow, das bringt mich meinem Ziel erheblich weiter.

Kann man das ganze auch Funktionsbasierend machen? D.h., dass die Stützstellen der Vergrößerung von z.B. 10x8 Werten auf 100x100 durch Polynome, also einer Näherungsfunktion, basieren. Optimalerweise wäre hierfür eine Logarithmierung der Matrix-Werte sinnvoll, da diese Teilweise über mehrere Dekaden gehen.

Ich habe es nun einmal so zusammengebastelt, sieht aus, nur der Verlauf ist noch sehr abgeknickt bei der Darstellung:

Code:
A=([  3702   2076   1116   119   3   1   2   5   59   29;
      3395   1839   1445   77   0   0   0   0   0   6;
      2498   1772   1205   305   189   77   23   1   1   0 ]);
         
[xi,yi]=meshgrid(linspace(1,size(A,2),100),linspace(1,size(A,1),100));
zi=interp2(A,xi,yi);
surf(xi,yi,zi);

logA=log(A);    % durch Logarithmierung könnte man den Grad des Polynoms veringern, kann man hier alle Nullen durch 1 ersetzen? ... wegen der Logarithmierung ... sollte aufs Ergebniss kaum einen Einfluss haben

a=mean(A(:));  
b=mean(zi(:));  % kann man sich die stellen der Matrix ausgeben lassen, die z.B mit 1Prozent Abweichung dem Mittelwert entsprechen?
 


Vielen Dank für deine Mühe bisher, das hat mir schon sehr geholfen.

Grüße, Mark
 
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.