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

Probleme bei der Darstellung von Intensitätswerten

 

chris_nmb
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 11.01.09
Wohnort: Wolfsburg
Version: ---
     Beitrag Verfasst am: 15.01.2009, 22:18     Titel: Probleme bei der Darstellung von Intensitätswerten
  Antworten mit Zitat      
Hallo Forum,

mir stellt sich folgendes Problem mit der 3-dimensionalen Darstellung einer Matrix aus Messwerten (Intensitätswerte), eigentlich dann ja schon 4D. Das Messsystem fährt eine Halbkugel in definierten Winkelschritten und festen Radius 170 mm ab und nimmt dabei diese Messwerte auf. Beginn der Messung ist bei einem Azimut Winkel von -90° an dieser Position fährt der Empfänger den Zenit -85° bis 85° in 0,1° schritten ab. Danach wird der Azimut in positiver Richtung 5° verstellt und der Empfänger fährt erneut den Zenit von -85° bis 85° ab, solange bis der Azimutwinkel von 90° erreicht wird. Aus den Messwerten ergibt sich eine Matrix von 1701x37 Werten.
Winkelschritte : Theta(Zenitwinkel) -85:0.1:85 Zeile und Phi(Azimutwinkel) -90:5:90 Spalte.

Es sollte eine Art deformierte Halbkugel entstehen. Ich hab aber leider keine Vorstellung was nötig ist um diese Matrix in Matlab korrekt darzustellen. Ein paar Sachen hab ich auch schon probiert aber irgendwie scheiterts schon daran, dass die beiden Vektoren die die Matrix aufspannen nicht gleich lang sind.

Das betreffende Problem hab ich mal als mat-file in Anhang gepackt.

Schon mal Danke im Voraus.

Test_chris_nmb.rar
 Beschreibung:
mat file

Download
 Dateiname:  Test_chris_nmb.rar
 Dateigröße:  288.63 KB
 Heruntergeladen:  619 mal
Private Nachricht senden Benutzer-Profile anzeigen


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2009, 09:00     Titel:
  Antworten mit Zitat      
Wie Du schon richtig erkannt hast, fehlt Dir irgendwie eine Dimension. Wie sollen die eigentlichen Daten denn dargestellt werden?

Wenn es ganz korrekt sein soll, dann wäre es eine Halbkugel, die Du entsprechend deinen Intensitätswerten einfärbst. Dann noch ne Farbskala dran und gut.

Alternativ und eigentlich auch ganz hübsch: Die Intensität auf dem Radius abtragen. Intensität 0 legst Du dann auf den Radius R und variierst den Radius mit der Intensität. Dabei geht zwar die Information über den eigentlichen Radius verloren, aber das ist ja ohnehin keine relevante Information bzw. kann man das auch einfach dranschreiben, dass auf einer Halbkugelschale gemessen wurde.


EDIT: Der Code unten entspricht meiner zweiten Beschreibung - für den ersten Fall fällt mir so richtig nichts ein.

Die Transformation von Kugelkoordinaten in kartesische hab ich von hand gemacht. Kann man natürlich auch mit sph2kart machen. Allerdings kommt man so auf den ersten bilickt drumherum, das ganze Ebenenweise, also in einer Schleife durchzuexerzieren. Auch blöd ist, dass die Achsen jetzt natürlich kartesisch sind, Werte ablesen will aus dem Bild aber wahrscheinlich sowieso niemand, oder?

Code:

clear all; clc;

load Test_chris_nmb.mat;

%Winkel in rad umrechnen
theta = theta/360*2*pi; %oben-unten
phi = phi/360*2*pi;     %rechts-links

for iCount = 1:length(phi)
    for jCount = 1:length(theta)
        %Kugelkoordinaten auslesen
        r = data(jCount, iCount);
        th = theta(jCount);
        ph = phi(iCount);

        a = r * cos(ph); %Rechenwert (Diagonale in x-y-Ebene)

        %Kartesische Koordinaten ausrechnen
        x(jCount, iCount) = a * cos(ph);
        y(jCount, iCount) = a * sin(ph);
        z(jCount, iCount) = r * sin(th);
    end
end

plot3(x,y,z);
figure();
surf(x,y,z);
set(gcf, 'Renderer', 'opengl')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 16.01.2009, 11:40     Titel:
  Antworten mit Zitat      
Hm also, wenn mich nicht alles täuscht, könnte dies hier, Epfi's Idee 1 entsprechen.

Code:

clear all; clc;

load Test_chris_nmb.mat;

theta=-85:0.1:85;
theta=theta/360*2*pi;
phi=-90:5:90;
phi=phi/360*2*pi;
R=10;

[PHI,THETA]=meshgrid(phi,theta);

[X,Y,Z]=sph2cart(THETA,PHI,R);

scatter3(X(:),Y(:),Z(:),0.1,data(:)./max(data(:)))
 

_________________

>> why
The computer did it.
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 - 2024 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.