Código fuente de seguimiento de vídeo de Matlab
Gráfico de contorno de contorno.
CONTOUR(Z) es el mapa de contorno de la matriz Z, procesando los valores en Z
Representa la altura sobre el plano. Los gráficos de contorno son curvas horizontales
para ciertos valores de V, Z. El valor V se elige automáticamente.
CONTOUR(X,Y,Z) X e Y especifican las coordenadas (X,Y)
Superficie como para navegar. Los datos X e Y se transpondrán u ordenarán
convirtiéndolos en formato MESHGRID, dependiendo de la primera
fila y columna de X (utilizada para posicionar los datos) y
La primera fila de X y la primera columna de Y (para ordenar los datos). Los
datos X e Y deben ordenarse de forma coherente si el primer
elemento de Todos los elementos es mayor
que el segundo. Del mismo modo, Y debe ordenarse consistentemente fila por fila.
CONTOUR(Z,N) y CONTOUR(X,Y,Z,N) dibujan N líneas de contorno,
anula el valor automático.
Contorno(Z,V) y Contorno(X,Y,Z,V) dibujan contornos de longitud (V)
Especificado en el valor v del vector. Calcule un solo contorno en el nivel v usando CONTOUR(Z,) o
CONTOUR(X,Y,Z,).
El contorno (AX,...) se dibuja en AX en lugar de GCA.
= Contour(...) devuelve la matriz de contorno C, como se describe en
Maneja H para los objetos CONTOURC y contourgroup. Este identificador puede
utilizarse como entrada para CLABEL.
Los contornos generalmente se colorean según el mapa de colores actual
y se dibujan como objetos de parche. Puedes anular este comportamiento
con la sintaxis contorno(...LINESPEC) para dibujar un contorno
con un color y estilo de línea específicos. Consulte Ayuda de trazado
para obtener más información sobre los valores de LINESPEC.
La entrada del esquema anterior puede ir seguida de pares atributo/valor
para especificar atributos adicionales del objeto del esquema.
Se utilizó el código de R. Pawlowicz para superficies paramétricas y
etiquetas de contorno incrustadas.
Ejemplo:
= contorno(pico); clarabel(c,h), barra de colores
Ver CONTOUR3, CONTOURF, CLABEL, COLORBAR, MESHGRID.
Detalles adicionales:
CONTOUR usa CONTOUR3 para completar la mayor parte del dibujo del contorno. A menos que
a especifique un tipo de línea, el contorno dibujará el objeto de parche
con un color de borde tomado del mapa de colores actual. Cuando se escribe línea
, se dibujará el objeto de línea.
Gracias a R. Pawlowicz (IOS) rich@ios.bc.ca por 'contours.m' y
'clabel.m/inline_labels' , De modo que los contornos ahora se pueden utilizar con superficies paramétricas
y etiquetas de contorno en línea.
Copyright 1984-2007 The MathWorks, Inc.
$Revisión: 5.18 4 . 18 $ $Fecha: 13/11/2007 00:10:21 $.
= use V6 plotapi(vara gin {:}, '-mfilename ', mfilename);
if v6
= lcontourv 6(args {:} );
Otros
Analizar posibles entradas de eje
error(nargchk(1, inf, nargin, ' struct '));
= ax check(args {:});
= parse args(args); #OK
if ~isempty(msg), error(msg# OK<); /p>
if está vacío(cax) || isa(handle(cax), ' hg.axes ')
CAX = new plot(CAX);
parax = cax
hold _ state = is hold(CAX);
Otro
parax = cax
cax = antepasado( cax, ' eje');
hold _ state = true
Fin
h = grupo de contorno de especificación (' padre ', parax, pares PV {: } );
set(h, 'refreshmode', 'auto');
c = get(h, 'matriz de contorno');
If ~ mantener estado
Ver(cax, 2);
set(cax, 'box', 'on', 'layer', 'top');
Grid(cax, "off")
Fin
plotdoneevent(cax, h);
h = double(h);
Fin
Si nargout gt0
cout = c;
Mano = h;
Fin
function = Lcontourv6(varargin)
Analizar posibles entradas de eje
error(nargchk(1, 6, nargin, ' struct '));
= verificación de hacha (vara rgin {:});
CAX = nuevo trazado(CAX);
= contour3(cax, args {:});
if ~ isempty(msg), error(msg); end #ok
set(h, 'ZData',);
if ~ishold(cax)
Ver(cax, 2);
set(cax, 'Box', 'on');
Grid(cax, "off")
Fin
función = parseargs(args)
msg="";
Separar el par pv del argumento inicial
= parse params (args);
Compruebe los parámetros de cadena especiales para los parámetros de datos finales
if ~isempty(pvpairs)
= col style( PV pairs { 1 }); #
OK
Si está vacío (tmsg)
args = {args{:}, pvpairs{1}}.
Pares PV = Pares PV(2:end);
Fin
msg = checkpvpairs(pvpairs);
Fin p>
Fin
p>
nargs = longitud (parámetro);
x =;
y =; p>z =;
if ischar(args{end})
= col estilo(args {end }); tmsg),
msg = sprintf('Opción desconocida "s",", args { end });
Fin
if ~isempty(c)
pvpairs = {'linecolor ', c, pares de PV {:} };
Fin
if ~isempty(l)
pvpairs = {'linestyle ', l, pares PV {:} };
Fin
NAR GS = NAR GS-1;
Fin p>
si (nargs == 2) || (nargs == 4)
si (nargs == 2)
z = comprobación de datos(args { 1 } );
pvpairs = { 'zdata ', z, pares PV {:} };
Otros
x = data chk(args { 1 }) ;
y = verificación de datos (args { 2 });
z = verificación de datos (args { 3 }); ,x,'ydata',y,'zdata' , z, pares PV {:} };
Fin
if(length(args { nargs })== 1) amp(fix(args{nargs}) == args {nargs})
N
zmin = min(real(double(z(:))));
zmax = max(real(double( z(:)));
if args{nargs} == 1
pvpairs = {'levellist ', (zmin zmax)/2, pares de PV {:} };
Otros
levs = linspace(zmin, zmax, args { nargs } 2
pvpairs); = {'levellist ', levs(2: end- 1), pares PV {:} };
Fin
Otros
Niveles
pvpairs = {'levellist ', único( args{nargs}), pares de PV {:} };
Fin
elseif (nargs == 1)
z = data chk(args { 1 });
pvpairs = {'zdata ',z,PV pares {:} };
elseif (nargs == 3)
x =
registro de datos(args { 1 });
y = registro de datos(args { 2 }
z = registro de datos(args { 3 }); p>pvpairs = {'xdata', x, 'ydata', y, 'zdata', z, pares PV {:} };
Fin
Si x e y, asegúrese de que los datos sean consistentes.
if ~isempty(x)
msg = xyzcheck(x, y, z
Fin
si ~ está vacío; (z amp; ampisempty(mensaje)
k = buscar(es finito(z));
zmax = max(z(k));
zmin = min(z(k));
if any(k)
warning('MATLAB:contour:NonFiniteData','Contorno no representado para ZData no finitos ') ;
elseif isempty(z) || (zmax == zmin)
Advertencia(' MATLAB: contour: ConstantData ', ' El contorno no se representa para ZData constante '); p>
Fin
Fin
args =;