sábado, 25 de mayo de 2013

Matlab For Genius (introduccion a Matlab 8)


El objetivo de estas publicaciones es hacer una introducción lo mas siempre posible al uso de Matlab 8. Tratando de explicarlo lo mas simple posible, "con peras y manzanas", "por las piedritas". Ya que muchas  ocasiones en nuestras propias universidades  es necesario aprender muchas cosas antes de  empezar a hacer nada en matlab. Por lo que en estos pequeños post iremos a la parte practica y si es necesario conocer algún concepto lo explicaremos en el trayecto, así que empezamos.


Creación de arrays


>> %creando un vector
>> a = [1,3,5,6]

a =

     1     3     5     6

>> %creando una matris
>> b = [1,2,3;4,5,6;7,9,10]

b =

     1     2     3
     4     5     6
     7     9    10

Operaciones basicas  de arrays

>> %multiplicando un vector a por un escalar m
>> m = 0.5

m =

    0.5000

>> ma = a*m

ma =

    0.5000    1.5000    2.5000    3.0000

>> %multiplicando una matris por un escalar
>> mb = b*m

mb =

    0.5000    1.0000    1.5000
    2.0000    2.5000    3.0000
    3.5000    4.5000    5.0000

>> %tambien podemos hacer operaciones entre estas
>> %obteniendo el seno del vector 1
>> sena=sin(a)

sena =

    0.8415    0.1411   -0.9589   -0.2794
recordando un poco de calculo vectorial
>> binversa = inv(b)

binversa =

   -1.3333    2.3333   -1.0000
    0.6667   -3.6667    2.0000
    0.3333    1.6667   -1.0000

>> %para optener la matris identidad
>> bindentidad = b*binversa

bindentidad =

    1.0000         0    0.0000
    0.0000    1.0000         0
    0.0000   -0.0000    1.0000

sábado, 18 de mayo de 2013

Animacion de un pendulo en MAtlab

video


Código Fuente.


freqs  = 5:15;
num = numel(freqs);
lengths = 1./sqrt(freqs);
piover6 = pi/6;

figure
axis([-0.3 0.3 -0.5 0]);
axis off;
org=zeros(size(freqs));
xpos=zeros(size(freqs));
ypos=zeros(size(freqs));
pendula =  line([org;org],[org;org],'LineWidth',1,'Marker','.','MarkerSize',25 ...
                ,'Color',[0 0 0],'visible','off' );


vidObj = VideoWriter('pendula_wave.avi');
open(vidObj);

count =0;
for t=0:0.001:1
    count=count+1;
omegas = 2*pi*freqs*t;
xpos = sin(piover6*cos(omegas)).*lengths;
ypos = -cos(piover6*cos(omegas)).*lengths;

 for i=1:num
 set(pendula(i),'visible','on');
 set(pendula(i),'XData',[0 xpos(i)]);
 set(pendula(i),'YData',[0 ypos(i)]);
 drawnow
 end
 currFrame = getframe;
 writeVideo(vidObj,currFrame)

 F(i) = getframe;
end

close(vidObj);