Matlab - Plotear en unos ejes pero hacer que aparezcan otros

   
Vista:

Plotear en unos ejes pero hacer que aparezcan otros

Publicado por Carlos (60 intervenciones) el 13/05/2011 12:23:44
Hola otra vez....

No sé si lo que intento hacer es un poco complicado o si no busco en los lugares apropiados, o que es lo que pasa, pero me cuesta mucho buscar información concreta sobre algunas cosas (en mi caso mis ejemplos) de Matlab. Supongo que también es normal, se pueden dar tantas variables y ejemplos distintos que no tiene sentido tratar de recogerlos todos...

El caso es que estoy haciendo un plot con diferentes elementos grafiados (un triángulo, una circunferencia, etc) y se grafian con la escala que toca.
Ahora lo que me gustaría hacer es que sin que variasen sus dimensiones, manteniendo la escala, aparezca en la gráfica otros valores que yo añadiría manualmente (no por teclado) a partir de ciertas variables internas al programa.

He estado mirando por axes properties y buscando información pero no veo la manera de variar manualmente los valores del gráfico sin variar la escala.

Añado el código que tengo donde todas las variables que falten vienen de antes y se pueden sustituir por cualquier valor para que vaya el ejemplo. Lo hago ahora y así hay menos dificultad para el que intente ayudarme :) Creo que ya está todo.

page=29.7;
B=7.1293 +56.1236i
I=455.8;
U=380;



%7.- DIAGRAMS
disp(' 7.- DIAGRAMS ')
fprintf('\n')
disp(' 7.1- BLONDEL DIAGRAM ')
page=page-5;
%7.1.- BLONDEL DIAGRAM
breal=real(B);
bimag=imag(B);

%7.1.1.- Scales calculation

% Tension scale
Vscale=(bimag*I*sqrt(3))/page;
Iscale=Vscale/(abs(B)*sqrt(3));
Sscale=(Vscale*U*1000)/abs(B);

%Obtaining phicos straights from 1 to 0.75
x=[0 hip];
phicos1=1.1858267444*x;
phicos2=1.371533304*x;
phicos3=1.06666*x;
phicos4=0.85042*x;

%Visualizing phicos, axis and grid
figure(gcf)
figure(1)
plot(x,phicos1,'g')
hold on
plot(x,phicos2,'g')
plot(x,phicos3,'g')
plot(x,phicos4,'g')
% Max=max([phicos1 phicos2 phicos3 phicos4]);
% Min=min([phicos1 phicos2 phicos3 phicos4]);


%Blondel triangle. Segments obtaining method.
hip=(abs(B))*I*sqrt(3);
c1=breal*I*sqrt(3);
c2=bimag*I*sqrt(3);

p1=[0 0];
p2=[0 hip];
p3x=c1*c2/hip;
p3y=(c1^2)/hip;
p3=[p3x p3y];

x=[p1(1) p2(1) p3(1) p1(1)];
y=[p1(2) p2(2) p3(2) p1(2)];
plot(x,y,'r')
axis([-5 hip -5 hip]);
plot([0 hip],[0 0],'k','linewidth',2)
plot([0 0],[0 hip],'k','linewidth',2)
title('BLONDEL DIAGRAM');
xlabel('Q[MVAr]');
ylabel('S[MW]');

%circunference
N=200;
R=hip;
X0=0;
Y0=0;
angle=linspace(0,2*pi-(1/N),N);
X=cos(angle)*R+X0;
Y=sin(angle)*R+Y0;

plot(X,Y, '-b', 'MarkerSize', 2)

hold off
grid
axis([-5 hip -5 hip]);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO

Plotear en unos ejes pero hacer que aparezcan otros

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 13/05/2011 14:03:35
Hello Carlos.
VARIOS OBSERVACIONES
1). Tu pregunta no puedo ejecutarlo en matlab.
2). Falta el valor de hip.
3). Cada vez que copies parte de tu programa que estas haciendo al foro, pruebalo tu tambien en matlab, para ver, si sólo esa parte se puede ejecutar.
4). "El caso es que estoy haciendo un plot con diferentes elementos grafiados ". ¿Que significa?.
Me parece que la pregunta deberia ser: "¿ En caso que estoy haciendo varias graficas (circunsferencia, triangulo, etc) con la funcion plot?.
5)- "y se grafian con la escala que toca. " ¿Que significa?.. Me parece que tu pregunta deberia ser: ¿ Porque las graficas anteriores se ven escalas de los ultima funcion graficada?.
Ejemplo: 1) Grafica 1. y=sin(x) 0<x<pi Se ve bien.
2) grafica 2. y= x^2+10; -10<x<10, ahora la grafica y=sin(x) se ve mas pequeño.

Saludos.
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR EN MATLAB
jjcc94@hotmail.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Plotear en unos ejes pero hacer que aparezcan otros

Publicado por Carlos (60 intervenciones) el 16/05/2011 09:35:09
Hola Jose, gracias por contestar.

Tengo algunos problemas para expresar los tecnicismos, así que disculpas. Probé el código en Matlab y funcionó, por eso me extrañó, pero ahora me he dado cuenta de que funcionó porque ya tenía almacenada la variable hip de antes. El valor de hip= 4.4664e+004

Los puntos 4) y 5) no son preguntas. Trato de explicar lo que sucede en mi programa.
4) estoy graficando un triángulo, 4 rectas y una circunferencia.
5) Cuando digo escala, es que los ejes se ajustan a unos valores. En mi caso los ajusto a los valores del triángulo que es la figura principal, la que tiene más peso dentro del conjunto.

Es decir, que los ejes se ajustan a los valores del triángulo (dejando margen por el lado con el lado más corto) y los ejes se muestran y escalan en consecuencia a estos valores.

Lo que yo busco, es dejar la imagen tal cual está ahora, pero haciendo que en los ejes aparezcan otros valores.

Me explico mejor con una imagen:

En este caso los ejes tienen valor mínimo (0,0) tanto el eje x como el eje y, y como valor máximo tienen el valor de hip que en este caso es 4.4664e+004.

Ahora, lo que realmente quiero hacer, es congelar la imagen, mantenerla en las mismas proporciones y "falsear" los ejes para que aparezcan otros valores. Es posible?
Si hay algo que no queda claro decídmelo y trato de explicarlo.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Plotear en unos ejes pero hacer que aparezcan otros

Publicado por Carlos (60 intervenciones) el 16/05/2011 09:35:39
La imagen: http://imageshack.us/photo/my-images/542/diagramai.png/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar