函式簡介
函式功能:在MATLAB中,該函式用於繪製矩陣的等高線。語法格式:
contour(Z)
繪製矩陣Z的等高線。在這裡Z表示距X-Y平面的高度。Z必須至少是一個2行2列的矩陣,且矩陣中至少包含兩個不等的數值。MATLAB會根據Z中最小值和最大值自動確定等高線的條數和等高線的值。繪圖區間的x、y軸範圍分別為:[1:m]、[1:n]。其中[m, n] = size(Z),m表示Z的行數,n表示Z的列數。
contour(Z,n)
這裡n指定了等高線的條數。
contour(Z,v)
其中v(means vector)中數據指定了要在哪些數據處繪製等高線。因此,這種調用格式將繪製出length(v)條等高線。如果只想在高度i處畫一條等高線, 使用countour(Z, [i i])。
contour(X,Y,Z)
contour(X,Y,Z,n)
contour(X,Y,Z,v)
這三種調用格式, 繪製的等高線被限定在由X、Y指定的區域內。X、Y和Z必須是同行同列的,且其中元素必須是遞增的。
contour(...,LineSpec)
使用LineSpec指定的線型和顏色來繪製等高線。
contour(axes_handle,...)
該種格式可以使我們不在當前坐標系中繪製等高線,axes_handle指定了一個坐標系句柄,等高線將被繪製在這個坐標系中。
[C,h] = contour(...)
相關函式:clabel, contourf, contour3, contourc, quiver
程式示例
示例一:v = -0.5:0.05:0.5;
[x, y] = meshgrid(v);
z = sqrt(1.0 - x.^2 - y.^2);
[dx, dy] = gradient(z, .2, .2);
mesh(x,y,z);
hold on;
contour(v, v, z, 10), quiver(v,v,dx,dy);
hold off;
示例二:
close all; clear; clc;
% 在二維平面上繪製一個正電荷的電場線圖。
k = 8.9875e+9; % 比例係數
e = 1.602e-19; % 一個電子帶電量絕對值
e_r = 2.8e-15; % 電子的半徑
ke = k .* e; % k by e
% 指定區間: d= <=d,並生成 格線數據
d = -e_r*40:e_r:e_r*40;
[x, y] = meshgrid(d);
% 計算電位
V_max = ke / e_r; % 正電荷的表面電勢最大,無窮遠處電勢為0
V = ke ./ sqrt(x.^2 + y.^2);
V(V==Inf) = V_max;
V(V>V_max) = V_max;
% 求電勢的梯度,即電場強度
[E_x, E_y] = gradient(-V);
% 繪製電場線分布
t = 0:2*pi/20:2*pi;
sx = e_r * cos(t);
sy = e_r * sin(t);
hold on;
plot(0, 0, 'ro', 0,0, 'r+'); % 標出正電荷
streamline(x, y, E_x, E_y, sx, sy);
contour(x, y, V, linspace(min(V(:)), max(V(:)), 60));
axis([min(d), max(d), min(d), max(d)]);
hold off;