Verfasst am: 25.03.2015, 09:46
Titel: Spektrumanalysator 360 Grad Plot 10 Grad Abstand
Hallo
ich versuche aktuell Daten von einem Spektrumanalysator zu plotten.
Ich habe eine Antenne in 10° Schritten um 360° gedreht und jeweils die Amplitudenwerte vom Spektrumanalyator in eine Matrix eingelesen.
Die Matrix hat nun 36x401 Werte.
Mein ziel ist es nun diese Amplitudenwerte in einem 3d Objekt evlt mit sphere anzuordnen - ich bekomm es aber nicht hin.
Hat das schommal jmd gemacht?
Die werte sind nicht komplex sondern einfache Zahlenwerte von -70 bis -130
Auf der X-Achse würde ich die Frequenz antragen wobei das erstmal nicht so wichtig ist.
Anbei die Messdaten
Die Messantenne sollte sozusagen der Mittelpunkt der Kugel sein.
Die 401 Werte enstprechen der x-Achse am Spektrumanalysator.
Diese wiederum spiegelt die Frquenz wieder.
Dh punkt 1 z.B. immer 1GHz und 401 wäre z.B 2 GHz
Die Amplitudenwerte selbst sind die Leistung an der jeweiligen Frequenz. - so wie du es Dargestellt hast stelle ich es mir vor. Sodass ich auf den ersten Blick sehe welches Spektrum zu welcher Messung gehört.
Kannst du mir sagen wie du den Plot erstellt hast?
In der ersten for-Schleife bilde ich für die jeweiligen 10° Schritte den x- und y- Anteil (Stichwort Einheitskreis).
der Vektor "lang" ist sozusagen die Entfernung von der Antenne. In deinem Fall musst du es von den Werten nur noch an die Frequenzen anpassen.
In der zweiten for-Schleife stelle ich dann für die jeweiligen 10°-Schritte die Koordinaten-Vektoren auf (Abstand multipliziert mit Position) um jedem Messpunkt einen festen "Ort" zuordnen zu können.
Code:
clear x y x_lang y_lang
counter=0;
for i=0:10:360
counter=counter+1;
alpha=i*pi/180;
x(counter)=cos(alpha);
y(counter)=sin(alpha);
end figure(1) hold on
grid on
lang=linspace(0,length(messdaten(1,:)),length(messdaten(1,:))); % Abstandsvektor for i=1:length(x)
x_lang(i,:)=lang.*x(i); % x-koordinaten
y_lang(i,:)=lang.*y(i); % y-koordinaten figure(1) plot3(x_lang(i,:),y_lang(i,:),messdaten(i,:));
hold on
end
Dafür kannst du die colormap(jet) verwenden.
Bei normalen Linienplots funktioniert colormap allerdings nicht, d.h. man muss surf verwenden.
Damit der Pot dann aber komplett 360° umfasst muss man die erste Zeile an Daten an die Plot-Daten wieder hintenanfügen um den Kreis zu schließen.
sieht dann so aus:
Code:
clear x y x_lang y_lang
counter=0;
for i=0:10:360
counter=counter+1;
alpha=i*pi/180;
x(counter)=cos(alpha);
y(counter)=sin(alpha);
end figure(1) hold on
grid on
lang=linspace(0,length(messdaten(1,:)),length(messdaten(1,:)));
for i=1:length(x)-1
x_lang(i,:)=lang.*x(i);
y_lang(i,:)=lang.*y(i);
figure(1)
%plot3(x_lang(i,:),y_lang(i,:),messdaten(i:i+1,:));
hold on
end
x_lang(i+1,:)=x_lang(1,:);
y_lang(i+1,:)=y_lang(1,:);
plot_messdaten=messdaten;
plot_messdaten(i+1,:)=messdaten(1,:); % Die originale Messdatei sollte nicht verändert werden, deshalb eine neue Matrix anlegen ;-) surf(x_lang,y_lang,plot_messdaten) colormap(jet)
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
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.