Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Nmeros primos.
o
Nmeros complejos
o
Nmeros enteros.
o
x = [2.1,-2.1]
round(x)
nos devuelve
floor(x)
nos devuelve
ceil(x)
nos devuelve
2
2
3
-2
-3
-2
Divisiones.
o
Nmeros aleatorios.
rand
abierto (0,1)
rand(n1,n2)
rand(n)
rand*(b-a) + a
un solo nmero.
floor(rand*(b+1-a)+a)
un solo nmero.
Si queremos que cada vez que se ejecute el programa, se borre lo que haba
inicialmente en el fichero de texto, habra que aadir la lnea siguiente:
delete('diario1.txt')
diary('diario1.txt')
x=3
diary of
f1
f2
v1
v2
v3
Primero, defino la matriz de datos, los ejes "x" e "y", y el estilo de colores:
A = [1 2 3; 4 5 6];
xticks = {'v1','v2','v3'};
yticks = {'f1','f2'};
estilo = 'copper';
Algunos estilos de colores posibles son 'default', 'copper', 'cool', 'spring',
'summer', 'autumn', 'winter'...
for(j=1:1:ny)
X = [0 1; 0 1];
Y = [ny-1 ny-1; ny ny];
X = X + (i-1);
Y = Y - (j-1);
B = ones(2,2)*A(j,i);
surface(X,Y,B);
end
end
axis([0 nx 0 ny])
colormap(estilo)
set(gca,'XTick',[0.5:1:nx])
set(gca,'XTickLabel',xticks)
set(gca,'YTick',[0.5:1:ny])
set(gca,'YTickLabel',yticks)
set(gca,'Fontsize',10)
box on
Nota: Para girar el vector de strings "yticks" 180, he usado dos veces el
comando "rot90".
Nota: Los strings se crean encerrando el texto entre apstrofes: 'texto'. Con
mat2str creamos otro string. Por ltimo, fusionamos los strings con los
corchetes.
1
5
9
6
7
2
Haramos:
A = importdata('data.txt')
6
7
2
Al cargar los datos desde Matlab, nos estara creando una estructura. Para
acceder a los datos y al texto, podramos hacer:
A = importdata('data.txt')
B = A.data
t1 = cell2mat(A.textdata)
clear A
B sera la matriz de datos, mientras t1 sera un string con la frase "matriz
magica".
Publicado por Luis en 17:42 0 comentarios
Enviar por correo electrnicoEscribe un blogCompartir con TwitterCompartir con
FacebookCompartir en Pinterest
Etiquetas: cargar datos, ficheros de texto
mircoles, 20 de noviembre de 2013
Cmo salvar variables en Matlab
Si queremos salvar varias variables, en un fichero, podemos usar el comando
"save". Por ejemplo:
A = magic(3);
q = 23;
t = 'Hola';
save data1.mat A q t
Tambin podemos salvar las variables en un fichero de texto, para poder ser
abierto fcilmente con otros programas:
save data1.txt -ascii A
t1 = [0:0.1:10]';
y1 = sin(t1*2*3.1416/20);
Ahora, queremos seleccionar los datos de "y1", en otra frecuencia distinta,
definida por los instantes de tiempo dados en el vector "t2". Por ejemplo, el
siguiente:
t2 = linspace(1,9,7)';
xlim(axes1,x1lim);
ylim(axes1,y1lim);
box(axes1,'on');
hold(axes1,'all');
plot(t,y1,'Parent',axes1,'LineWidth',1);
ylabel(y1string,'Color',color1);
axes2 = axes('Parent',figure1,...
'YTick',y2ticks,'YTickLabel',y2tickslabel,...
'XTick',x1ticks,'XTickLabel',x1tickslabel,...
'ColorOrder',[color1; color2],...
'YColor',color2,...
'Color','none',...
'Fontsize',10,...
'YAxisLocation','right');
xlim(axes2,x1lim);
ylim(axes2,y2lim);
hold(axes2,'all');
plot(t,y2,'Parent',axes2,'LineWidth',1);
ylabel(y2string,'Color',color2);
xlabel(x1string);
title('sinusoidales');
Nota: El eje de las x est pintado solo en "axes2". En "axes1" puse "'XTick',[]"
para que no escribiera nada. De no hacerlo as, el eje de las x se escribira dos
veces, uno sobre el otro, y quedara un poco feo.
Publicado por Luis en 9:47 0 comentarios
Este grfico est bastante pobre y se puede mejorar bastante. Por cierto, una
de las cosas que menos me gusta, es que las cifras significativas cambian en
los ejes.
figure(1)
hold on
box on
plot(t,y,'-','LineWidth',2,'Color',[1 0 0])
axis ([0 4 0 1.5])
xlabel('x')
ylabel('y')
title('y = 1.2 \cdot sin (2\pi /12 \cdot (t + \phi))')
set(gca,'XTick',[0:1:4])
set(gca,'XTickLabel',{'0','1','2','3','4'})
set(gca,'YTick',[0:0.5:1.5])
set(gca,'YTickLabel',{'0.0','0.5','1.0','1.5'})
set(gca,'Fontsize',10)
set(gca,'XGrid','on','YGrid','on')
legend({'\phi = 0'},2,'FontSize',10,'EdgeColor',[1 1 1]);
Otras posibilidades que tenemos, son el rea bajo la curva, barras para cada
punto, o una curva en forma de escalera:
t = [0.5:0.5:3.5]';
y = 1.2*sin(2*pi*t/12);
figure(1)
area(t,y,'FaceColor',[0.17 0.50 0.34]);
figure(1)
bar(t,y,'FaceColor',[0.7 0.8 1]);
figure(1)
stairs(t,y,'Color',[0.6 0.2 0],'LineWidth',2);
Por ltimo, muestro dos ejemplo de cmo representar varias curvas distintas,
usando un bucle for. Fjate, cmo defino la leyenda y los distintos colores para
cada curva.
phi = [0 1 2 3 4 5 6];
n = length(phi);
colores = [1 0 0; 1 0.6 0.2; 0.75 0.75 0; 0.17 0.51 0.34; 0.04 0.52 0.78; 0 0.75
0.75; 0.48 0.06 0.89];
t = [0:0.01:4]';
q = cell(1,n);
figure(2)
hold on
box on
for i=1:1:n
y = 1.2*sin(2*pi*(t+phi(i))/12);
plot(t,y,'-','LineWidth',2,'Color',colores(i,:))
q(i) = {['\phi = ' mat2str(phi(i))]};
end
axis([0 4 -1.5 1.5])
xlabel('x')
ylabel('y')
title('y = 1.2 \cdot sin (2\pi /12 \cdot (t + \phi))')
set(gca,'XTick',[0:1:4])
set(gca,'XTickLabel',{'0','1','2','3','4'})
set(gca,'YTick',[-1.5:0.5:1.5])
set(gca,'YTickLabel',{'-1.5','-1.0','-0.5','0.0','0.5','1.0','1.5'})
set(gca,'Fontsize',10)
set(gca,'XGrid','on','YGrid','on')
legend(q,3,'FontSize',10)
phi = [0:0.5:7.5];
phitext = {'0.0','0.5','1.0','1.5','2.0','2.5',...
'3.0','3.5','4.0','4.5','5.0','5.5',...
'6.0','6.5','7.0','7.5'}
n = length(phi);
colores = [1 0 0; 1 0.6 0.2; 0.75 0.75 0; 0.17 0.51 0.34; 0.04 0.52 0.78; 0 0.75
0.75; 0.48 0.06 0.89];
t = [0:0.01:4]';
nt = length(t);
q = cell(1,n);
figure(1)
set(0,'DefaultAxesColorOrder',colores, 'DefaultAxesLineStyleOrder','-|--|:')
hold on
box on
y = zeros(nt,n);
for i=1:1:n
y(:,i) = 1.2*sin(2*pi*(t+phi(i))/8);
q(i) = {['\phi = ' cell2mat(phitext(i))]};
end
plot(t,y)
axis([0 4 -1.5 1.5])
xlabel('x')
ylabel('y')
title('y = 1.2 \cdot sin (2\pi /8 \cdot (t + \phi))')
set(gca,'XTick',[0:1:4])
set(gca,'XTickLabel',{'0','1','2','3','4'})
set(gca,'YTick',[-1.5:0.5:1.5])
set(gca,'YTickLabel',{'-1.5','-1.0','-0.5','0.0','0.5','1.0','1.5'})
set(gca,'Fontsize',10)
legend(q,'Location','EastOutside','FontSize',10)
- En este segundo caso, defino la secuencia de colores y tipo de curvas, que
van a ir teniendo las curvas. Luego, calculo una matriz con todas las curvas.
- En la leyenda, los valores de phi los calculo como strings, para poner
correctamente las cifras significativas.