Introducción a Matlab

Contents

Flujo en un canal circular (pág. 32)

Matlab_intro.pdf

canal.png

g = 9.8;  d = 2;  th = pi/3;    % Input
Dc = d/2*(1-cos(th));
Qnum = 2^(3/2)*Dc^(5/2)*sqrt(g)*(th-0.5*sin(2*th))^(3/2);
Qden = 8*sqrt(sin(th))*(1-cos(th))^(5/2);
Q = Qnum/Qden   % m^3/s
Q =

    0.5725

Suma de Series de Fourier (pág. 47)

k = 1:150;			               % (1x150)
tau = linspace(-0.5, 0.5, 100);    % (1x100)
sk = sin(pi*k/4)./(pi*k/4); 	   % (1x150)
cntau = cos(2*pi*k'*tau ); 	       % (150x100)
f = 0.25*(1+2*sk*cntau);   % (1x150) (150x100) -> (1x100)
plot(tau, f )

Evaluación de función bidimensional (pág. 49)

n = (1:25)*pi; 					% (1x25)
eta = 0:0.025:1; 				% (1x41)
xi = 0:0.05:0.7;				% (1x15)
[X1, temp1] = meshgrid(xi, (1-cos(n))./n.^3);	% (25x15)
temp2 = exp(-n'*xi);			% (25x15)
Rnx = temp1.*temp2;			 	% (25x15)
temp3 = sin(n'*eta);			% (25x41)
u = 4*Rnx'*temp3;				% (15x41)
mesh(eta, xi, u)

Entrada de datos desde ficheros Excel (pág. 68)

[X, Y] = xlsread('datosexp2.xlsx')
X =

  100.0000    0.1000
  110.0000    0.2000
  135.0000    0.3300
  150.0000    0.4000
  175.0000    0.5500


Y =

  3×2 cell array

    'Respuesta Transductor'    ''              
    'Fuerza'                   'Desplazamiento'
    '(kPa)'                    '(mm)'          

Convergencia de una serie (pág 78)

serie = 1; k = 2; exacto = pi^2/6;
while abs((serie - exacto)/exacto) >= 1e-4
    serie = serie+1/k^2;
    k = k+1;
end
disp(['Numero de terminos = ' num2str(k-1)])
Numero de terminos = 6079

Ejemplos de recursividad (pág. 87)

Factorial

function f = fact(n)
if n == 0
  f = 1;
else
  f = n * fact(n-1);
end
x = fact(10)
%
% Torres de Hanoi
%
%
%   function hanoi(n, i, a, f)
%   if n > 0
%      hanoi(n-1, i, f, a);
%      fprintf('mover disco %d de %c a %c\n',n,i,f);
%      hanoi(n-1, a, i, f);
%   end
%
hanoi(4,'a', 'b','c')
x =

     3628800

mover disco 1 de a a b
mover disco 2 de a a c
mover disco 1 de b a c
mover disco 3 de a a b
mover disco 1 de c a a
mover disco 2 de c a b
mover disco 1 de a a b
mover disco 4 de a a c
mover disco 1 de b a c
mover disco 2 de b a a
mover disco 1 de c a a
mover disco 3 de b a c
mover disco 1 de a a b
mover disco 2 de a a c
mover disco 1 de b a c

Ejemplo de creación de una función (pág. 88)

help CalcularXY
[u,v] = CalcularXY(0:pi/4:pi, 1.4, 2, 0.75)
  Calculo de:
  x = cos(at)+b
  y = |x|+c
  Escalares: a, b, c
  Vectores: t, x, y


u =

    3.0000    2.4540    1.4122    1.0123    1.6910


v =

    3.7500    3.2040    2.1622    1.7623    2.4410

Ejemplo de subfunciones (pág. 92)

function [m, s] = MeanStdDev(dat) % Main function
n = length(dat); m = meen(dat, n); s = stdev(dat, n);
function m = meen(v, n) % Sub funcion
m = sum(v)/n;
function sd = stdev(v, n) % Sub funcion
m = meen(v, n); % llamada a una subfuncion
sd = sqrt((sum(v.^2) - n*m^2)/(n-1));
v = [1, 2 , 3, 4];
[m, s] = MeanStdDev(v)
m =

    2.5000


s =

    1.2910

Ejemplo de función anónima (pág. 94)

bet = pi/3; % los parametros deben asignarse antes de la función
cx = @(x) (abs(cos(bet*x)));
disp(cx(4.1))
%
% Versión con dos argumentos:
%
cx = @(x, bet) (abs(cos(bet*x)));
disp(cx(4.1, pi/3))
%
% Uso de la versión con dos argumentos en otra func. anónima:
%
cx = @(x, bet) (abs(cos(bet*x)));
crt = @(x) (x^(1/3)); % calcula la raiz cubica del argumento
disp(crt(cx(4.1, pi/3)))
    0.4067

    0.4067

    0.7409

Ejemplo de feval (pág. 100)

  function d = CosBeta(x, w) % funcion en fichero CosBeta.m
  % beta = w(1); alpha = w(2)
  d = cos(x*w(1))-w(2);
  function nRoots = ManyZeros(zname, n, xs, toler, dxx, w)
  x = xs;
  dx = dxx;
  nRoots = zeros(n, 1);
  for m = 1:n
     s1 = sign(feval(zname, x, w));
     while dx/x >toler
        if s1 ~= sign(feval(zname, x+dx, w))
           dx = dx/2;
        else
           x = x+dx;
        end
     end
   nRoots(m) = x;
   dx = dxx;
   x = 1.05*x;
   end
NoRoots = 5; xStart = 0.2;
tolerance = 1e-6; increment = 0.3;
beta = pi/3; a = 0.5;
c = ManyZeros(@CosBeta, NoRoots, xStart, tolerance, increment, [beta, a])
c =

    1.0000
    5.0000
    7.0000
   11.0000
   13.0000

Ejemplo de polyfit/polyval (pág. 106) Ingresar r = 2.5, valor para evaluar = 0.93

ncs = ExpData;
c = polyfit(ncs(:,1), ncs(:,2), 4);
% r = input('Ingresa parametro r ');
% Su = input('Ingresa valor para evaluar ');
r = 2.5;
Su = 0.93;
q = 1/(1+polyval(c, Su)/sqrt(r));
disp(['Valor resultante = ' num2str(q)])
Valor resultante = 0.87855

Ejemplo de spline (pág. 108)

n = 12; xi = 0.1;
tau = linspace(0, 20, n);
data = DampedSineWave(tau, xi);
newtau = linspace(0, 20, 200);
yspline = spline(tau, data, newtau);
yexact = DampedSineWave(newtau, xi);
plot(newtau, yspline, 'r--', newtau, yexact, 'k-')

Ejemplo de interp1 (pág. 111)

xi = 0.1;
tau = linspace(0, 4.5, 15);
data = DampedSineWave(tau, xi);
TauZero = interp1(data, tau, 0)
TauZero =

    1.6817

Ejemplo de trapz(pág. 113)

xi = 0.1; N = 200;
tau = linspace(0, 20, N);
ftau = DampedSineWave(tau, xi);
Area = trapz(tau, ftau)
Area =

    0.3021

Ejemplo de trapz(pág. 114)

xi = 0.1;
tau = linspace(0, 20, 200);
ftau = DampedSineWave(tau, xi);
Logicp = (ftau >= 0);
PosArea = trapz(tau, ftau.*Logicp);
Logicn = (ftau < 0);
NegArea = trapz(tau, ftau.*Logicn);
disp([' Area positiva = ' num2str(PosArea)])
disp([' Area negativa = ' num2str(NegArea)])
disp([' Area neta = ' num2str(PosArea+NegArea)])
 Area positiva = 2.9549
 Area negativa = -2.6529
 Area neta = 0.30207

Ejemplo de diff (pág. 117)

t = linspace(1, 2, 25);
L = sum(sqrt(diff(2*t).^2+diff(t.^2).^2+diff(log(t)).^2))
% Ejemplo de polyarea (pág. 119)
a = 2; b = 5;
t = linspace(0, 2*pi, 11);
x = a*cos(t);
y = b*sin(t);
disp(['Area = ' num2str(polyarea(x, y))])
L =

    3.6931

Area = 29.3893

Ejemplo de transformada de Fourier (pág. 124)

k = 5; m = 10; fo = 10; Bo = 2.5; N = 2^m; T = 2^k/fo;
ts = (0:N-1)*T/N; df = (0:N/2-1)/T;
SampledSignal = Bo*sin(2*pi*fo*ts)+Bo/2*sin(2*pi*fo*2*ts);
An = abs(fft(SampledSignal, N))/N;
plot(df, 2*An(1:N/2))

Ejemplo de integración numérica – quadl (pág. 134)

xi = 0.1;
tau = linspace(0, 20, 200);
ftau = DampedSineWave(tau, xi);
Area = trapz(tau, ftau)
PosArea = trapz(tau, ftau.* (ftau >= 0));
NegArea = trapz(tau, ftau.* (ftau < 0));
disp(['Positive area = ' num2str(PosArea)])
disp(['Negative area = ' num2str(NegArea)])
disp(['Net area = ' num2str(PosArea+NegArea)])
Area = quadl(@DampedSineWave, 0, 20, [], [], 0.1)
Area =

    0.3021

Positive area = 2.9549
Negative area = -2.6529
Net area = 0.30207

Area =

    0.3022

Ejemplo de integración numérica – dblquad (pág. 137)

r = 0.5;
Arg = @(x, y) (exp(-(x.^2-2*r*x.*y+y.^2)));
P = dblquad(Arg, -3, 3, -2, 2)/2/pi/sqrt(1-r^2)
P =

    0.6570

Ejemplo de solución numérica de EDO (pág. 148)

Ejemploode

Ejemplo de solución numérica de EDO con bvp4c (pág. 157)

bvpEjemplo

Ejemplo de mínimo local de una función – fminbnd (pág. 163)

[xmin, fmin] = fminbnd(@humps, 0.5, 0.8)
xmin =

    0.6370


fmin =

   11.2528

Ejemplo de maximo local de una función – fminbnd (pág. 163)

[xmax, fmax] = fminbnd(inline('-humps(x)', 'x '), 0, 0.5);
disp([' Valor maximo de humps en el intervalo 0 <= x <= 0.5 is ' num2str(-fmax)])
disp([' que ocurre en x = ' num2str(xmax)])
 Valor maximo de humps en el intervalo 0 <= x <= 0.5 is 96.5014
 que ocurre en x = 0.30039

Ejemplos de gráficos (pág. 18)

Matlab_graficos.pdf

figure;
plot(2, 4, 'r*')
plot([0, 1], [0, 2])
x = 2:2:8;
y = [zeros(1, length(x)); cos(pi*x/20)];
plot([x; x],y, 'k')
plot([x; x], y, 'k', x, cos(pi*x/20), 'rs')
axis([1, 9, 0, 1])

Ejemplos de gráficos (pág. 19)

figure;
x = 2:2:8;
y = [zeros(1, length(x)); cos(pi*x/20)];
plot([x; x], y, 'k')
hold on
plot(x, cos(pi*x/20), 's', 'MarkerEdgeColor', 'b','MarkerFaceColor', 'r', 'MarkerSize', 14)
axis([1, 9, 0, 1])

Ejemplos de gráficos (pág. 20)

figure;
theta = linspace(0, 2*pi);
plot(1+0.5*cos(theta), 2+0.5*sin(theta))
axis equal

Ejemplos de gráficos (pág. 21)

figure;
theta = linspace(0, 2*pi, 50); % (1×50)
rad = 0.5:0.25:1.75; % (1×6)
x = 1+cos(theta)'*rad; % (50×6)
y = 2+sin(theta)'*rad; % (50×6)
plot(x, y, 'k', 1, 2, 'k+')
axis equal

Ejemplos de gráficos (pág. 22)

figure;
x =-5:0.2:5; % (1×51)
a = 1:5; % (1×5)
[xx, aa] = meshgrid(x.^2, a.^2); % (5×51)
plot(x, aa-xx, 'k')

Familia de Curvas (pág. 23)

figure;
aa = 1:3; % (1×3)
N = 1:10; % (1×10)
[a, k] = meshgrid(aa, N); % (10×3)
S = cumsum(1./(a+k).^2); % (10×3)
plot(N, S, 'ks-')

Gráficas de múltiples funciones en una figura (pág. 24)

figure;
x = linspace(0, 3.5);
plot(x, [0.1*x.^2; cos(x).^2; exp(-0.3*x)], 'k')

Gráficas de múltiples funciones en una figura (pág. 25)

figure;
x = linspace(0, 3.5);
plot(x, 0.1*x.^2, 'k', x, cos(x).^2, 'k', x, exp(-0.3*x), 'k')

Gráficas de múltiples funciones en una figura (pág. 25)

figure;
x = linspace(0, 3.5);
plot(x, 0.1*x.^2, 'k')
hold on
plot(x, cos(x).^2, 'k')
plot(x, exp(-0.3*x), 'k')

Cambio de apariencia de las gráficas (pág. 29)

figure;
th = linspace(0, 2*pi, 101);
x = sin(th);
y = sin(2*th+pi/4);
plot(x, y, 'k-')
box on
grid on

Cambio de apariencia de las gráficas (pág. 29)

figure;
th = linspace(0, 2*pi, 101);
x = sin(th);
y = sin(2*th+pi/4);
plot(x, y, 'k-')
box off
grid off
axis off

Cambio de apariencia de las gráficas (pág. 30)

figure;
th = linspace(0, 2*pi, 101);
x = sin(th);
y = sin(2*th+pi/4);
plot(x, y, 'k-')
box off
grid off

Ejemplos de gráficos de propósito especial (pág. 33)

figure;
Om = linspace(0.01, 10, 200);
[H, T] = FOm(Om, 0.05);
semilogx(Om, H)

Ejemplos de gráficos de propósito especial (pág. 33)

figure;
Om = linspace(0.01, 10, 200);
[H, T] = FOm(Om, 0.05);
semilogy(Om, H)

Ejemplos de gráficos de propósito especial (pág. 34)

figure;
Om = linspace(0.01, 10, 200);
[H, T] = FOm(Om, 0.05);
loglog(Om, H)

Ejemplos de gráficos de propósito especial (pág. 34)

figure;
Om = linspace(0.01, 2, 50);
[H, T] = FOm(Om, 0.05);
stairs(Om, H)

Ejemplos de gráficos de propósito especial (pág. 35)

figure;
Om = linspace(0.01, 2, 30);
[H, T] = FOm(Om, 0.05);
stem(Om, H)

Ejemplos de gráficos de propósito especial (pág. 35)

figure;
Om = linspace(0.01, 2, 30);
[H, T] = FOm(Om, 0.05);
bar(Om, H, 0.6)

Ejemplos plotyy (pág. 37)

figure;
Om = logspace(-1, 1, 200);
[H, T] = FOm(Om, 0.05);
plotyy(Om, H, Om, T, 'loglog', 'semilogx')

Ejemplos convhull (págs. 39)

figure;
[x, y] = PointSet;
n = convhull(x, y);
plot(x(n),y(n), 'k-', x, y, 'ok')
axis equal

Ejemplos delauney, y voronoi (págs. 40)

figure;
[x, y] = PointSet;
tr = delaunay(x,y);
triplot(tr,x,y,'k')
hold on
axis equal
plot(x, y, 'ok')
[x, y] = PointSet;
voronoi(x, y, 'ko')
axis equal

Ejemplo de pie y pie3 (pág. 42)

figure;
dat = [39, 10, 1];
pie(dat) % o pie3(…)

Ejemplo de pie y pie3 (pág. 43)

figure;
dat = [39, 10, 1];
pie(dat, [1, 1, 0] ) % o pie3(…)

Ejemplo de pie y pie3 (pág. 44)

figure;
dat = [39, 10, 1];
dat = 100*dat/sum(dat);
A = ['Operational ' num2str(dat(1)) '%'];
B = ['Initial ' num2str(dat(2)) '%'];
C = ['R&D ' num2str(dat(3)) '%'];
colormap('cool')
pie(dat, [1, 1, 0],{A, B, C}) % o pie3(…)

Lectura, visualización y manipulación de imágenes digitales (pág. 48)

figure;
A = imread('WindTunnel.jpg', 'jpeg');
image(A)
axis image off

Lectura, visualización y manipulación de imágenes digitales (pág. 48)

figure;
A = imread('WindTunnel.jpg', 'jpeg');
A(250:330, 100:180, 1) = 255;
A(250:330, 100:180, 2) = 255;
A(250:330, 100:180, 3) = 0;
image(A)
axis image off

Lectura, visualización y manipulación de imágenes digitales (pág. 49)

figure;
A = imread('WindTunnel.jpg', 'jpeg');
image(A)
figure
% row=input('qué fila? ');
row = 200;
red = A(row, :, 1);
gr = A(row, :, 2);
bl = A(row, :, 3);
plot(red, 'r');
hold on
plot(gr, 'g');
plot(bl, 'b');

Etiquetas de ejes y curvas, títulos y texto (pág. 52)

figure;
x = linspace(0, 6, 100);
plot(x, cos(x), 'k', x, 1./cosh(x), 'k', [4.73, 4.73], [-1, 1], 'k')
xlabel('x')
ylabel('Valor de las funciones')
title('Visualizacion de interseccion de dos curvas')
text(4.8, -0.1, 'x = 4.73')
text(2.1, 0.3, '1/cosh(x)')
text(1.2, -0.4, 'cos(x)')

leyendas (pág. 56)

figure;
x = linspace(0, 6, 100);
plot(x, cos(x), 'k', x, 1./cosh(x), 'k', [4.73, 4.73], [-1, 1], 'k')
xlabel('x')
ylabel('Valor de las funciones')
title('Visualizacion de interseccion de dos curvas')
text(4.8, -0.1, 'x = 4.73')
legend('cos(x) ', '1/cosh(x) ', 'Location', 'Southwest')

relleno de regiones (pág. 59)

figure;
x = linspace(0,6, 100);
plot(x, cos(x), 'k-', x, 1./cosh(x), 'k--', [4.73, 4.73], [-1, 1], 'k')
xlabel('x')
ylabel('Valor de funciones')
title('Visualizacion de interseccion de dos curvas')
text(4.8, -0.1, 'x = 4.73')
legend('cos(x) ', '1/cosh(x) ', 'Location', 'Southwest')
xn = linspace(0, 4.73, 50);
hold on
fill([xn, fliplr(xn)], [1./cosh(xn), fliplr(cos(xn))], 'c');

orden de relleno (pág. 62)

figure;
t = linspace(0, 2*pi);
fill(t, 0.5*sin(2*t), 'y')
hold on
fill(t, sin(t), 'm')
axis off
t = linspace(0, 2*pi);
fill(t, sin(t), 'm')
hold on
fill(t, 0.5*sin(2*t), 'y')
axis off

transparencia (pág. 63)

figure;
t = linspace(0, 2*pi);
fill(t, 0.5*sin(2*t), 'y')
hold on
fill(t, sin(t),'m', 'FaceVertexAlphaData', 0.6, 'FaceAlpha', 'Flat')
axis off
t = linspace(0, 2*pi);
fill(t, 0.5*sin(2*t), 'y')
hold on
fill(t, sin(t), 'm', 'FaceVertexAlphaData', 1,'FaceAlpha', 'Flat')
axis off

transparencia (pág. 64)

figure;
t = linspace(0, 2*pi);
fill(t, 0.5*sin(2*t), 'y')
hold on
fill(t, sin(t), 'm', 'FaceVertexAlphaData', 0.0,'FaceAlpha', 'Flat')
axis off

control del contorno (pág. 67)

figure;
[x1, y1] = ptc(0, 0, 1);
[x2, y2] = ptc(0.5, 0.5, 1.5);
patch(x1, y1, 'y')
patch(x2, y2, 'g')
axis off

control del contorno (pág. 67)

figure;
[x1, y1] = ptc(0, 0, 1);
[x2, y2] = ptc(0.5, 0.5, 1.5);
patch(x1, y1, 'y', 'EdgeColor', 'b','LineWidth', 2.5, 'FaceVertexAlphaData', 0.6, 'FaceAlpha', 'Flat')
patch(x2, y2, 'g', 'EdgeColor', 'r', 'LineWidth', 3.5)
axis off

Letras griegas, símbolos matemáticos, subíndices y superíndices (pág. 71)

figure;
Om1 = linspace(1, 2);  beta = 3;
plot(Om1, cos(4*pi*Om1).*exp(-(1+Om1.^beta)), 'k')
title('\itg_{\rm2} \rmversus \Omega_1 para \it\beta \rm= 3')
ylabel('\itg_{\rm2}')
xlabel('\Omega_1')
text(1.2, 0.08, '\itg_{\rm2}\rm=cos(\Omega_1)\ite^{\rm-(1+\Omega_1^{\it\beta\rm})}')

modificación de atributos de ejes, curvas y texto (pág. 81)

figure;
x = linspace(0, 6, 100);
plot(x, cos(x), 'k-', x, 1./cosh(x), 'k--', [4.73, 4.73], [-1, 1], 'k')
xlabel('x')
ylabel('Amplitud')
title('Visualizacion de interseccion de dos curvas')
text(4.8, -0.1, 'x = 4.73')
[a, b] = legend('cos(\itx\rm)', '1/cosh(\itx\rm)', 'Location','SouthWest');
set(a(1), 'LineWidth', 2, 'Color', 'y')
set(b(1), 'fontsize', 14, 'Color', 'b')
set(b(2), 'fontsize', 14, 'Color', 'r')

modificación de atributos de ejes, curvas y texto (pág. 84)

figure;
x = linspace(0, 6,100);
hc = plot(x, cos(x), 'k-');
hold on
hch = plot(x, 1./cosh(x), 'k--');
hsl = plot( [4.73, 4.73], [-1, 1], 'k');
[a, b] = legend('cos(x) ', '1/cosh(x) ', 'Location', 'SouthWest');
xlabel('\it\bfx', 'FontSize', 14, 'FontName', 'Times')
ylabel('Valor de funciones', 'FontSize', 14)
title('\bfVisualizacion de interseccion de dos curvas', 'FontName', 'Courier', 'FontSize', 14)
text(4.8, -0.1, '\itx \rm= 4.73','FontName', 'Times', 'FontSize', 12)
set(hc, 'LineWidth', 4)
set(hch, 'LineWidth', 2.5)
set(hsl, 'LineWidth', 0.25, 'Color', 'g')
set(gca, 'FontSize', 14, 'LineWidth', 1.5)
set(b(1), 'FontSize', 10)

inserción de un gráfico dentro de otro (pág. 90)

figure;
k = 1:200;   alph = 0.4;   xi = 0.1;  Omo = 0.03*sqrt(2);  N = 400;
HOm = inline('1./sqrt((1-(Om*k).^2).^2+(2*xi*Om*k).^2)', 'k', 'Om', 'xi');
tau = linspace(-50, 120, N);
sn = sin(pi*k*alph)./(pi*k*alph);
thn = atan2(2*xi*Omo*k, (1-(Omo*k).^2)); psi = atan2(sn, 0);
cnt = sin(Omo*k'*tau-repmat(thn', 1, N)+repmat(psi', 1, N));
z = alph*(1+2*abs(sn).*HOm(k, Omo, xi)*cnt);
plot(tau, z, 'k-')
a = axis;  a(1) = -50;  a(2) = 120;
axis(a)
xlabel('\tau')
ylabel('x(\tau)')
axes('Position', [0.62, 0.62, 0.25, 0.25])
semilogy(k*Omo, HOm(k, Omo, xi), 'k-')
ylabel('H(\Omega)')
xlabel('\Omega')
box off

Ejemplo de Animación (pág. 100)

figure;
n = 40;  phi = linspace(0, 2*pi, n);
a = 1;   b = 2.5;   e = 0.25;   nF = 5;
c = 0.5;   d = 1;   f = 0.06;
ax = a*cos(phi);   ay = a*sin(phi);
s = real(ax+sqrt(b^2-(ay-e).^2));
v = [1.1*min(ax), 1.1*(max(s)+d/2) 1.1*min(ay), 1.1*max(ay)];
xgnd = [min(ax), max(s)+d/2, max(s)+d/2, min(ax), min(ax)];
ygnd = [e, e, e-f, e-f, e];
slidery = [e, e+c, e+c, e, e];  % Vertical component of slider
vi=VideoWriter('Manivela.avi');
open(vi);
for k=1:n
    fill(xgnd, ygnd, 'r')  % Barra horizontal
    hold on
    plot(ax, ay, 'b--', 0, 0, 'ko');  % circulo punteado y centro de circulo
    sliderx = [s(k)-d/2, s(k)-d/2, s(k)+d/2, s(k)+d/2, s(k)-d/2];
    fill(sliderx, slidery, 'm');  % posicion  slider
    plot([0 ax(k)], [0;ay(k)], 'ko-', 'LineWidth', 2);
    plot([ax(k), s(k)], [ay(k), e+c/2], 'ko-', 'LineWidth', 2);
    axis(v)
    axis off equal
    ManivelaFrame(k) = getframe;
    writeVideo(vi, ManivelaFrame(k));
    hold off
end
movie(ManivelaFrame, nF, 30)
close(vi);

gráfico en coordenadas polares (pág. 105)

figure;
theta = linspace(-pi/2, pi/2, 300);
p = abs(besselj(1, 6*pi*theta)./(6*pi*theta));
polar(theta, p/max(p))
axis([-.02, 0.15, -0.05, 0.05]) % Right hand figure

Dibujo de cajas de alambres (pág. 9)

Matlab_graficos3D.pdf

figure;
BoxPlot3(1, 1, 1, 3, 5, 7)
BoxPlot3(4, 6, 8, 4, 5, 1)
BoxPlot3(8, 11, 9, 1, 1, 1)

Onda senoidal sobre una superficie de un cilindro (pág. 10)

figure;
t = linspace(0, 2*pi, 200);
a = 10; b = 1.0; c = 0.3;
x = b*cos(t);
y = b*sin(t);
z = c*cos(a*t);
plot3(x, y, z, 'k')
axis equal

Ejemplos de superficies con surf y mesh (pág. 13)

figure;
[x,y,z] = SurfExample;
surf(x, y, z)

Ejemplos de superficies con surf y mesh (pág. 13)

figure;
[x,y,z] = SurfExample;
mesh(x, y, z)

Ejemplos de superficies con surf y mesh (pág. 13)

figure;
[x,y,z] = SurfExample;
mesh(x, y, z)
hidden off

combinando superficies y líneas (pág. 17)

function Corners
xc = [-3, -3, 3, 3];
yc = [-3, 13, 13, -3];
zc = xc.^4+3*xc.^2-2*xc+6-2*yc.*xc.^2+yc.^2-2*yc;
plot3([xc; xc], [yc; yc], [zeros(1,4); zc], 'k')
figure;
Corners

combinando superficies y líneas (pág. 18)

figure;
Disc(10,2)

combinando superficies y líneas (pág. 19)

figure;
[x, y, z] = SurfExample;
surf(x, y, z);
Disc(10, 80)
Corners

modificación de la apariencia de gráficos (pág. 21)

figure;
[x,y,z] = SurfExample;
mesh(x, y, z);
grid off

modificación de la apariencia de gráficos (pág. 21)

figure;
[x,y,z] = SurfExample;
mesh(x, y, z);
axis off
grid off

modificación de la apariencia de gráficos (pág. 22)

figure;
[x,y,z] = SurfExample;
mesh(x, y, z);
axis on
grid off
box on

funciones adicionales para mejorar visualmente una superficie (pág. 24)

figure;
[x,y,z] = SurfExample;
meshz(x, y, z)

funciones adicionales para mejorar visualmente una superficie (pág. 24)

figure;
[x,y,z] = SurfExample;
waterfall(x, y, z)

funciones adicionales para mejorar visualmente una superficie (pág. 25)

figure;
[x,y,z] = SurfExample;
ribbon(y, z)

funciones adicionales para mejorar visualmente una superficie (pág. 25)

figure;
[x,y,z] = SurfExample;
surfnorm(x, y, z)

Ejemplo de gráficos de contornos (pág. 27)

figure;
[x,y,z] = SurfExample;
meshc(x, y, z)
grid off

Ejemplo de gráficos de contornos (pág. 27)

figure;
[x,y,z] = SurfExample;
surfc(x, y, z)
grid off

Ejemplo de contour (pág. 30)

figure;
[x,y,z] = SurfExample;
contour(x, y, z)

Ejemplo de contour (pág. 30)

figure;
[x,y,z] = SurfExample;
contour(x, y, z, 4)

Ejemplo de contour y clabel (pág. 31)

figure;
[x,y,z] = SurfExample;
[C, h] = contour(x, y, z);
clabel(C, h)

Ejemplo de contour y clabel (pág. 31)

figure;
[x,y,z] = SurfExample;
v= [10, 30:30:120];
[C, h] = contour(x, y, z, v);
clabel(C, h, v)

Ejemplo de contour3, contourf y colorbar (pág. 34)

figure;
[x,y,z] = SurfExample;
[C, h] = contour3(x, y, z);
clabel(C, h)

Ejemplo de contour3, contourf y colorbar (pág. 34)

figure;
[x,y,z] = SurfExample;
[C, h] = contourf(x, y, z);
colorbar

Ejemplo de superficie cilíndrica (pág. 37)

figure;
zz = linspace(0, 2*pi, 26);
[x, y, z] = cylinder(1.1+sin(zz), 16);
surf(x, y, z)
axis off

Superficies cilíndricas, esféricas y elipsoidales (pág. 39)

figure;
[x, y, z] = sphere;
axis equal
surf(x, y, z)

Superficies cilíndricas, esféricas y elipsoidales (pág. 40)

figure;
[x, y, z] = ellipsoid(0,0,0,5.9,3.25,3.25,30);
figure
surf(x, y, z)
axis equal

Ejemplo de view y shading (pág. 44)

figure;
zz = linspace(0, 2*pi, 26);
r=1.1+sin(zz);
[x, y, z] = cylinder(r, 16);
surf(x, y, z)
view(-88.5, -48)
shading faceted
axis off vis3d

Ejemplo de view y shading (pág. 45)

figure;
zz = linspace(0, 2*pi, 26);
r=1.1+sin(zz);
[x, y, z] = cylinder(r, 16);
surf(x, y, z)
view(-88.5, -48)
shading flat
axis off vis3d

Ejemplo de view y shading (pág. 46)

figure;
zz = linspace(0, 2*pi, 26);
r=1.1+sin(zz);
[x, y, z] = cylinder(r, 16);
surf(x, y, z)
view(-88.5, -48)
shading interp
axis off vis3d

Ejemplo de view y shading (pág. 47)

figure;
r = 1+sin(zz);
[x, y, z] = cylinder(r, 16);
surf(x, y, z)
view(-88.5,-48)
view(-88.5,-48)
shading interp
colormap(copper)
axis off vis3d

Ejemplo de transparencia (pág. 50)

function [x, y, z] = Transparency a = 1.13; b = 1.14; uu = linspace(0, 2*pi, 30); uu = linspace(0, 2*pi, 30); vv = linspace(-15, 6, 45); [u, v] = meshgrid(uu, vv); x = a.^v.*cos(v).*(1+cos(u)); y = -a.^v.*sin(v).*(1+cos(u)); z = -b*a.^v.*(1+sin(u));

figure;
[x, y, z] = Transparency;
surf(x, y, z)
shading interp
axis vis3d off equal
view([-35 38])

Ejemplo de transparencia (pág. 50)

figure;
[x, y, z] = Transparency;
h = surf(x, y, z);
set(h, 'FaceAlpha', 0.4)
shading interp
axis vis3d off equal
view([-35 38])

Ejemplo de transparencia (pág. 51)

figure;
[x, y, z] = Transparency;
h = surf(x, y, z);
set(h, 'FaceAlpha', 0.4)
axis vis3d off equal
view([-35 38])

Ejemplo coloreado de cajas (pág. 54)

function BoxPlot3C(xo, yo, zo, Lx, Ly, Lz, w) % w = 0, wire frame; w = 1, rectangles are colored x = [xo xo xo xo xo+Lx xo+Lx xo+Lx xo+Lx]; y = [yo yo yo+Ly yo+Ly yo yo yo+Ly yo+Ly]; z = [zo zo+Lz zo+Lz zo zo zo+Lz zo+Lz zo ]; index = zeros(6,5); index(1,:) = [1 2 3 4 1]; index(2,:) = [5 6 7 8 5]; index(3,:) = [1 2 6 5 1]; index(4,:) = [4 3 7 8 4]; index(5,:) = [2 6 7 3 2]; index(6,:) = [1 5 8 4 1]; c = 'rgbcmy'; for k = 1:6 if w~=0 fill3(x(index(k,:)), y(index(k,:)), z(index(k,:)), c(k)) else plot3(x(index(k,:)), y(index(k,:)), z(index(k,:))) end hold on end

figure;
BoxPlot3C(1, 1, 1, 3, 5, 7, 1)
BoxPlot3C(4, 6, 8, 4, 5, 1, 0)
BoxPlot3C(8, 11, 9, 1, 1, 1, 1)

Ejemplo: intersección de un cilindro y una esfera y resaltado de su intersección (pág. 57)

figure;
a = 1;
[xs, ys, zs] = sphere(30);
surf(2*a*xs, 2*a*ys, 2*a*zs)
hold on
[x, y, z] = cylinder;
surf(a*x+a, a*y, 4*a*z-2*a)
surf(a*x+a, a*y, 4*a*z-2*a)
shading interp
t = linspace(0, 4*pi, 100);
x = a*(1+cos(t));
y = a*sin(t);
z = 2*a*sin(t/2);
plot3(x, y, z, 'y-', 'Linewidth', 2.5);
axis equal off
view([45, 30])

Ejemplo: mejora de gráficos 2D con objetos 3D (pág. 58-59)

figure;
b = [0.5, 1]; c = b;
for k = 1:2
    plot(b, b*c(k), 'k-')
    text(0.75, (b(1)*c(k)+b(2)*c(k))/2-0.02, ['c/a = ' num2str(c(k))])
    hold on
end
xlabel('b/a'); ylabel('V')
for k = 1:4
    switch k
        case 1
            axes('position', [0.12, 0.2, 0.2, 0.2])
            [xs, ys, zs] = ellipsoid(0, 0, 0, 1, b(1), c(1), 20);
            mesh(xs, ys, zs)
            text(0, 0, 1, ['b/a = ' num2str(b(1)) ' c/a = ' num2str(c(1))])
        case 2
            axes ('position', [0.1, 0.5, 0.2, 0.2])
            [xs, ys, zs] = ellipsoid(0, 0, 0, 1, b(1), c(2), 20);
            mesh (xs, ys, zs)
            text (0, 0, 1.5, ['b/a = ' num2str(b(1)) ' c/a = ' num2str(c(2))])
        case 3
            axes ('position', [0.7, 0.65, 0.2, 0.2])
            [xs, ys, zs] = ellipsoid(0, 0, 0, 1, b(2), c(2), 20);
            mesh (xs, ys, zs)
            text (-1.5, 0, 2, ['b/a = ' num2str(b(2)) ' c/a = ' num2str(c(2))])
        case 4
            axes ('position', [0.7, 0.38, 0.2, 0.2])
            [xs, ys, zs] = ellipsoid(0, 0, 0, 1, b(2), c(1), 20);
            mesh (xs, ys, zs)
            text (-1.5, 0, 1.5, ['b/a = ' num2str(b(2)) ' c/a = ' num2str(c(1))])
    end
    colormap([0 0 0])
    axis equal off
end

Rotación y traslación de objetos 3D: generación de Toro (pág. 68)

figure;
[X, Y, Z] = Torus(0.2, 0.8);
psi = [0, pi/3, pi/3]; chi = [0, 0, 0]; phi = [pi/3,0, pi/3];
Lx = 0; Ly = 0; Lz = 0;
for k = 1:4
    subplot(2,2,k)
    if k==1
        mesh(X, Y, Z)
    else
        mesh(X, Y, Z)
        hold on
        [Xr Yr Zr] = EulerAngles(psi(k-1), chi(k-1),phi(k-1), Lx, Ly, Lz, X, Y, Z);
        mesh(Xr, Yr, Zr)
    end
    switch k
        case 1
            text(0.5, -0.5, 1, 'Torus')
        case 2
            text(0.5, -0.5, 1,'\phi = 60\circ')
        case 3
            text(0.5,-0.5,1,'\psi = 60\circ')
            text(0.5,-0.5,1,'\psi = 60\circ')
        case 4
            text(0.5, -0.5, 1.35,'\psi = 60\circ')
            text(0.55, -0.5, 1,'\phi = 60\circ')
    end
    colormap([0 0 0])
    axis equal off
    grid off
end