Verfasst am: 13.06.2012, 17:49
Titel: Punkte plotten anstelle von Nullen und Einsen
Hallo,
ich quäle mich seit einiger Tagen mit dem Erstellen einer Grafik, die einen Punkt plotten soll, wenn der entsprechende Wert einer n*n Matrix 0 ist. Für jeden der n X-Werte auf der X-Achse gibt es jeweils n Y-Werte auf der Y-Achse.
Ich benutze den Funktion plotmat [Copyright (c) Ian T Nabney (1996-9)] um die einzelnen Werte aus der Matrix in den X-Y Raum zu plotten, allerdings werden im Moment die Werte 0 und 1 angezeigt. Ich bräuchte jedoch Punkte wenn der Wert 0 ist und keinen Punkt wenn der Wert 1 ist (siehe Zielgrafik).
var g b t pi c y r k inv q mc n rw d r_k;
varexo eps_g;
parameters beta, rho, theta, alpha, epsilon, delta, varphi, eta, lambda, phi_pi, phi_g, phi_b, gamma_g, rho_g, mu, lambda_p, gamma_c, sigma, sigma_tilde, theta_n, theta_t, gamma_i;
%PLOTMAT Display a matrix.
%
% Description % PLOTMAT(MATRIX, TEXTCOLOUR, GRIDCOLOUR, FONTSIZE) displays the matrix % MATRIX on the current figure. The TEXTCOLOUR and GRIDCOLOUR % arguments control the colours of the numbers and grid labels % respectively and should follow the usual Matlab specification. The % parameter FONTSIZE should be an integer.
%
% See also % CONFFIG, DEMMLP2
%
% Copyright (c) Ian T Nabney (1996-9)
[N,N]=size(stabmat);
for i=1:N,
for j=1:N,
numberString=num2str(stabmat(i,j));
text(i,j,numberString, ...
'HorizontalAlignment','center', ...
'Color', 'k', ...
'FontWeight','bold', ...
'FontSize', 12);
end;
end;
Was genau bedeutet die "Achselnskalierung"? Wenn man die XTicks nciht manuell ändert, ist die Skalierung und die Limits der X-Achse ja konform zu den Daten. Wenn man aber per AXIS einen bestimmten Ausschnitt aus dem Diagramm wählt, der nicht alle Daten umfasst, schneidet man natürlich Daten ab.
Das praktischste wäre es also, die X-Werte der Daten gleich wie gewünscht zu setzen. Dann funktioniert auch das Zoomen perfekt.
Wann immer man im Forum "funktionieren nicht" schreibt, ist eine genaue Erklärung des Fehler nötig. Ansonsten erfordert eine Antwort zu viel Raterei, wo das Problem liegen könnte.
Dies betrifft übrigens nicht nur das goMatlab Forum, sondern auch andere Foren, und alle wissenschaftlichen Diskussionen, um um genau zu sein, alle anderen Diskussionen auch.
Bitte poste also noch die Details, z.B. die Fehlermeldung oder die Beschreibung des Unterschieds zwischen dem erhaltenen und dem gewünschten Ergebnis.
danke für die Rückmeldung.
Das Problem ist, dass die x und y Werte im (tatsächlichen) Modell zwischen 0 und 1 liegen. Das sind die thetas und lambdas. In der Berechnung der Stabilitätsregion des Modells (siehe Code), benutze ich N Werte von theta und lambda zwischen 0 und 1. Die beiden Loops (i und j) gehen von 1 bis N, da es ja N Werte gibt für theta und lambda. Die Endmatrix "stabmat" (N*N) besteht aus nullen und einsen.
Die jetzige Plot-Funktion beschriftet nun die beiden Achsen mit 1, 2, 3, 4, ... , N. Allerdings würde ich gerne die lambda und theta Werte (0 bis 1) abgebildet sehen.
Bei meinem ersten Eintrag oben wurden auch die tatsächlichen Werte der thetas und lambdas in die Achsen eingetragen. Das Problem war nur, dass in der Grafik selbst die Werte "0" und "1" an den jewiligen Punktorten angegeben wurden.
Gruß,
FL
Ich verstehe das Problem immer noch nicht.
Die eigentlichen Daten gehen von 0.0001 bis 0.9999, aber Du benutzt stattdessen die Indices, welche von 1 bis N gehen. Aber du möchtest eigentliche die Werte der Daten selbst verwenden, oder? Dann wäre es doch naheliegend, die Daten selbst zu verwenden.
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.