Verfasst am: 10.09.2009, 15:10
Titel: View Befehl geht nicht
Hallo zusammen,
habe einen Code geschrieben (auf den ich als Anfänger fast schon stolz bin) der soweit auch super funtioniert bis auf die Tatsache dass der view-Befehl am Schluss ums verrecken nicht gehen will.
TANGLES=(diff_values_matrix_mod(data_test,1).*pi/180); % auslesen der verschiedenen theta-Winkel
PANGLES=(diff_values_matrix_mod(data_test,2)*pi/180); % auslesen der verschiedenen phi-Winkel
r_max=(abs(max(data_test(:,3)))); % erkennen maximaler Radius
r=data_test(:,3);
% Globale Variablen
c=1.4; % Zuschlag 10% zu maximalem Radius in der Bodenkontur
d=10; % Teiler von r_max
e=1.45; % Abstand der Winkelbeschriftung
f=pi/12; % 15° - Aufteilung der Vollkreises
g=15; % entspricht 180°/12 --> unmittelbar mit f verknüpft!!
%Gitter erzeugen
phi=(data_test(:,2)*pi/180); % azimuth, "horizontal"
theta=(data_test(:,1)*pi/180); % elevation "vertikal" [PHI,THETA] = meshgrid(PANGLES,TANGLES);
%RADIUS=reshape(data_test(:,3),size(TANGLES),size(PANGLES)); % Spaltenvektor Radius umformen für meshgrid; nicht interpolierte Lösung
RADIUS=griddata(phi,theta,r,PHI,THETA,'linear'); % Linear interpolierte Lösung
% Umrechnen sphärisch --> kartesisch
y = RADIUS.*cos(PHI).*cos(THETA);
x = RADIUS.*sin(PHI).*cos(THETA);
z = RADIUS.*sin(THETA);
% Erstellen Bodenkontur % Kreise % Plotten der Kreise clf% Figur löschen, Fenster offen halten
p=(0:f:2*pi); % 15° Schritte im Bogenmaß for n=(0:r_max/(c*d):r_max*c)% schleifenindex von 0 bis 110% vom Radius in 10% Schritten plot3(n*cos(p),n*sin(p),(-ones(1,length(p)))-(r_max*c),"k")% Plot der Kreise in der XY-Ebene hold on
plot3((-ones(1,length(p))-r_max*c),n*cos(p),n*sin(p),"k")% Plot der Kreise in der YZ-Ebene hold on
plot3(n*cos(p),(-ones(1,length(p)))-r_max*c,n*sin(p),"k")% Plot der Kreise in der XZ-Ebene
endfor
% radiale Linien % Plotten der radialen Linien
m=(0:r_max/(c*d):r_max*c); % schleifenindex von 0 bis 110% vom Radius in 10% Schritten for n=0:f:2*pi% 15° Schritte im Bogenmaß plot3(m.*cos(n),m.*sin(n),(-ones(1,length(m))-(r_max*c)),"k")% Plot der Linien in der XY-Ebene hold on
plot3((-ones(1,length(m))-r_max*c),m.*cos(n),m.*sin(n),"k")% Plot der Linien in der YZ-Ebene hold on
plot3(m.*cos(n),(-ones(1,length(m))-r_max*c),m.*sin(n),"k")% Plot der Linien in der XZ-Ebene hold on
endfor
% Beschriftungen an den radialen Linien
j=0; % lokale Zählvariable
k=-90;
l=75;
for i=(0:f:(2*pi)-(pi/24)) text(r_max*e*cos(i),r_max*e*sin(i),(-r_max*c),num2str(j*g),'Fontsize',8); % Beschriftung Kreis in der XY-Ebene (azimuth)
j=j+1;
endfor
for i=(-pi/2:f:pi/2) text(r_max*e*cos(i),-r_max*c,r_max*e*sin(i),num2str(k),'Fontsize',8); % Beschriftung Kreis in der XZ-Ebene (elevation 1. Seite)
k=k+g;
endfor
for i=(pi/2+f:f:3*pi/2-f) text(r_max*e*cos(i),-r_max*c,r_max*e*sin(i),num2str(l),'Fontsize',8); % Beschriftung Kreis in der XZ-Ebene (elevation 2. Seite)
l=l-g;
endfor
k=-90; % Redefinition für neuen Schleifendurchgang
l=75; % Redefinition für neuen Schleifendurchgang for i=(-pi/2:f:pi/2) text(-r_max*c,r_max*e*cos(i),r_max*e*sin(i),num2str(k),'Fontsize',8); % Beschriftung Kreis in der YZ-Ebene (elevation 1. Seite)
k=k+g;
endfor
for i=(pi/2+f:f:3*pi/2-f) text(-r_max*c,r_max*e*cos(i),r_max*e*sin(i),num2str(l),'Fontsize',8); % Beschriftung Kreis in der YZ-Ebene (elevation 2. Seite)
l=l-g;
endfor
% Datenplott surf(x,y,z,RADIUS)% Plotten der Hauptkurve title("Leistungsspektrum fiktive Daten");
shading('interp');
hold on
mesh(x,y,(-ones(size(z))*r_max*c),RADIUS)% Plotten der Projektion auf der XY-Ebene hold on
mesh((-ones(size(x))*r_max*c),y,z,RADIUS)% Plotten der Projektion auf der YZ-Ebene hold on
mesh(x,(-ones(size(y))*r_max*c),z,RADIUS)% Plotten der Projektion auf der XZ-Ebene hold on
axis off % Achsen KoordSys aus xlabel('x-Achse'); % Beschriftung x-Achse ylabel('y-Achse'); % Beschriftung y-Achse zlabel('z-Achse'); % Beschriftung z-Achse grid off % Gitternetzlinien aus view([50135]);
mach mal das ";" hinter "view" weg vielleicht funzt es dann. In Matlab unterdrückt soviel ich weiß das ";"-Zeichen die Ausgabe. Ansonsten müßte ich nur raten und würde drauf tippen das eventuell dein Rechner etwas lahm ist und länger zum berechnen der Ansicht braucht???
ich hattes mal im 7.1 unter XP, dass beim view der falsche eingestellt wurde, da waren 2 plots offen, trisurfs drinnen, bei einem gings, beim anderen nicht.
Kannst du den Plot mit den Plot-Dreh-Zeiger (also, wenn du in der plotleiste auf den Kreis mit kleinem Pfeil klickst) drehen ?
view dreht nur an einer Achse, teilweise ist der Aufbau wenn man versch. plotroutinen nutzt schon durchwachsen.
Probier einfach mal alle Axes aus, das müssten die ersten children des gcf sein, glaube ich. Musst halt einfach nach allem mit xAxisLabel und so suchen. Wenn du dort mehrere hast, würd ich einfach mal alle durchprobieren. also mit view(ax,...) lt hilfe
gerade dachte ich, "hurra er schickt ein Beispiel". Dann versuchte ich es auszuprobieren. Das MAT file ist ein ASCII file. Die Hochkomma und die ENDFOR / ENDIF Befehle zeigen mir, dass das Ganze noch nie in MATLAB gelaufen ist. Und wenn ich dann diff_values_matrix_mod.m so ummodele, dass es läuft, braucht es weniger als eine Millisekunde.
Ich würde mich freuen zu helfen, aber das erschwert es doch sehr.
versteh ich gerade nicht. hab das aus excel raus in ne *.mat umgewandelt.
nachdem ich aber keine mat dateien anhängen kann hab ich es alt txt erweitert. wenn du das txt wieder weg löschst ist es doch wieder eine mat datei, oder??
das endfor endif kommt daher weil ich im moment noch auf meine firmenlizenz für matlab warte und daher at moment in octave schreibe... -- das diese commands in matlab nicht gehen wusste ich net - wie gesagt bin ein neuling und hab mich da halt rein gelesen....
das das script geht sieht man ja in meinem ersten post, sowas zeichne ich bestimmt net mit paint um leute zu veräppeln
zu deinen änderungen:
was macht denn tic und toc? zeigt dir das die rechenzeit an?
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.