Matlab作图

matlab线性 标记 颜色

在这里插入图片描述

曲线图

  • 在[0,2*pi]用红线画sin(x),用绿圈画cos(x)
%%
% 画曲线
x = linspace(0, 2 * pi, 30);
y = sin(x);
z = cos(x);
plot(x, y, 'r', x, z, 'c');  % r 红色, c 蓝绿色

在这里插入图片描述

%%
% 符号函数画图
ezplot('sin(x)', [0, pi]);

%%
% 四角图形
ezplot('cos(t)^3', 'sin(t)^3', [0, 2*pi]);

%%
% 函数图像

ezplot('exp(x)+sin(x*y)', [-2, 0.5, 0, 2]);  % 范围 x: -2, 0.5, y: 0, 2;

%%
% fplot 函数 fplot('fun', lims)
% 表示绘制字符串fun函数在lims=[xmin, xmax]的图形
% - fun 必须是m文件函数名 或者 独立变量的字符串
% - fplot函数不能画参数方程和隐函数图形 可在一个图上画多个图形
fplot('exp(2*x)+sin(3*x^2)', [-1, 2]);

%%
% tanh(x) 函数图像
fplot('tanh(x)', [-2, 2]);

%%
% 同时画 tanh(x) sin(x) cos(x) 三个图像
fplot('[tanh(x), sin(x), cos(x)]', 2*pi*[-1 1 -1 1]);

对数坐标

%%
% 对数坐标图
% loglog 双对数坐标转换, semilogx x轴对数坐标 semilogy y轴对数坐标
% plotyy 命令 一个在左边一个在右边

% 双对数坐标
x = logspace(-1, 2);
loglog(x, exp(x), '-s');  % 实线 正方形
grid on;
%%

% 简单半对数坐标
x = 0: 0.1: 10;
semilogy(x, 10.^x);

在这里插入图片描述

在这里插入图片描述

三维图像

空间曲线

%%
% 简单三维曲线

t = 0:pi/50:10*pi;
x = sin(t);
y = cos(t);
z = t;
plot3(x, y, z, ':'); % x y z分别是横坐标 纵坐标 函数值 可指定 线性 颜色
rotate3d;  % 开启3d旋转

在这里插入图片描述

%%

% 多条曲线
x = -3: 0.1: 3;
y = 1: 0.1: 5;
[X, Y] = meshgrid(x, y);
Z = (X+Y).^2;
plot3(X, Y, Z);
rotate3d;

在这里插入图片描述

空间曲面

%%

% 空间简单曲面
x = -3: 0.1: 3;
y = 1: 0.1: 5;
[X, Y] = meshgrid(x, y); % 网格化
Z = (X + Y).^2;
surf(X, Y, Z); % 表示横坐标, 纵坐标 函数值

shading flat;  % 图形平滑

在这里插入图片描述

%%

% 网格曲面
x = -3: 0.1: 3;
y = 1: 0.1: 5;
[X, Y] = meshgrid(x, y); % 网格化
Z = (X + Y).^2;   % 表示横坐标, 纵坐标 函数值 
mesh(X, Y, Z);

在这里插入图片描述

meshc(x, y, z) 在x0y面有映射曲线

% 马鞍面 (双曲抛物面)
subplot(1, 2, 2);
[X, Y] = meshgrid(-7:0.1:7);
Z = X.^2./8-Y.^2./6;
meshc(X, Y, Z);
view(30, 30);  % 正数逆时针旋转
% 标注
title('马鞍面');
xlabel('x'); ylabel('y'); zlabel('z');
rotate3d();   % 可旋转观察

在这里插入图片描述

%%

% 绘制peaks的网格图
% 网格周围画 curtain图
[X, Y] = meshgrid(-3: 0.125: 3);
Z = peaks(X, Y);
meshz(X, Y, Z);  % z 的值与网格对应

在这里插入图片描述

图形处理

图形上加格栅、图例和标注

  • grid on;
  • grid off;
%%

clc;clear;  %清除变量
x = linspace(0, 2*pi, 30);
y = sin(x);
plot(x, y);
xlabel('x轴');
ylabel('y轴');
title('y = sin(x) 图像'); % 为图像加标题
grid on; % 开启格栅

在这里插入图片描述

图形交互标注

%%

% 图形鼠标标注

x = linspace(0, 2*pi, 30);
y = sin(x);
z = cos(x);
plot(x, y, x, z);  % 画两个图像
gtext('sin(x)');
gtext('cos(x)');

在这里插入图片描述

定制坐标

%%

% 定制坐标Axis([xmin xmax ymin ymax zmin max]) 定制图形坐标

%在区间[0.005, 0.01]显示 sin(1/x)的图形

x = linspace(0.0001, 0.01, 1000);
y = sin(1./x);
plot(x, y);
axis([0.005, 0.01, -1 1]);  % 定制坐标


在这里插入图片描述

  • hold on 保持当前窗口
  • hold off 释放当前窗口
%%

% 坐标系内的两个图像

x = linspace(0, 2*pi, 30);
y = sin(x);
z = cos(x);
plot(x, z, ':');
hold on;
plot(x, y);

在这里插入图片描述

多窗口

%%

% figure(h) 新建h 窗口 激活图形使其可见, 并置于其他图形之上

% [0, 2*pi] 上两个窗口画y = sin(x) z = cos(x)

x = linspace(0, 2*pi, 100);
y = sin(x);
z = cos(x);
plot(x, y);
title('y = sin(x)');
pause; % 暂停
figure(2);
plot(x, z);
title('z = cos(x)');

分割窗口

%%

% 一个多个窗口和
x = linspace(0, 2*pi, 100);
y = sin(x);
z = cos(x);
a = sin(x).*cos(x);
b = sin(x)./(cos(x) + eps);
subplot(2, 2, 1); plot(x, y); title('sin(x)');
subplot(2, 2, 2); plot(x, z); title('cos(x)');
subplot(2, 2, 3); plot(x, a); title('sin(x).*cos(x)');
subplot(2, 2, 4); plot(x, b); title('sin(x)./cos(x)');

在这里插入图片描述

图形缩放

%%

% 缩放图形
x = linspace(0, 2*pi, 100);
y = sin(x);
plot(x, y);
zoom on;

在这里插入图片描述

改变观察视角

%%

%%

% view(a, b) 命令view(a, b), a是方位角, b是仰角
% view([x,y, z])  空间矢量 关心比例数 与数值的大小无关

clc;
x = -3:0.1:3;
y = 1:0.1:5;
[X, Y] = meshgrid(x, y);
Z = (X + Y).^2;
subplot(2, 2, 1); mesh(X, Y, Z);
subplot(2, 2, 2); mesh(X, Y, Z); view(50, -34);
subplot(2, 2, 3); mesh(X, Y, Z); view(-60, 70);
subplot(2, 2, 4); mesh(X, Y, Z); view([0, 1, 1]);

在这里插入图片描述

动画

%%

% 动画

% Moviein() 产生一个帧矩阵
% getframe 对当前图像进行快照
% movie() 按照顺序回放个号各帧
clc;
[x, y, z] = peaks(30);
surf(x, y, z);
axis([-3 3 -3 3 -10 10]);
m = moviein(15);

% getframe 对图像进行快照
for i=1:15
   view(-37.5+ 24*(i - 1),30);
   m(:, i) = getframe;
end

movie(m);

在这里插入图片描述

在这里插入图片描述

特殊的二维图形

极坐标图

%%
% 极坐标图 polar(theta, rho, s) theta角度, rho 为长度

theta = linspace(0, 2*pi);
rho = sin(2*theta).*cos(2*theta);
polar(theta, rho, 'g');
title('Polar plot of sin (2*theta).*cos(2*theta)');

在这里插入图片描述

二维散点图

%%
% scatter(x, y, s, c)  
% x, y 指定位置显示彩色圈, x, y 大小必须相同

clc;clear;
load seamount
scatter(x, y, 5, z)

在这里插入图片描述

二维平面等值线图


%%

% 平面直线图, contour(x, y, z, n) 绘制n个等值线的二维等值线图
[X, Y] = meshgrid(-2:.2:2, -2:.2:3);
Z = X.*exp(-X.^2 - Y.^2);
[C, h] = contour(X, Y, Z);
clabel(C, h);
colormap cool;

在这里插入图片描述

特殊三维图形函数

三维等值线


%%

% 空间等值线

[x, y, z] = peaks;
subplot(1, 2, 1);
contour3(x, y, z, 16, 's');  % 16个等值线
grid on;
xlabel('x-axis');ylabel('y-axis');
zlabel('z-axis');
title('contour3 of peaks');

subplot(1, 2, 2);
contour(x, y, z, 16, 's');  %  二维等值线
grid on;
xlabel('x-axis');ylabel('y-axis');
zlabel('z-axis');
title('contour of peaks');

在这里插入图片描述

三维散点图



%%

% 空间散点图

clc;clear;
[x, y, z] = sphere();
X = [x(:)*.5 x(:)*.75 x(:)];
Y = [y(:)*.5 y(:)*.75 y(:)];
Z = [z(:)*.5 z(:)*.75 z(:)];
S = repmat([1 .75 .5] * 10, prod(size(x)), 1);
C = repmat([1 2 3], prod(size(x)), 1);
scatter3(X(:), Y(:), Z(:), S(:), C(:), 'filled');
view(-60, 60);

在这里插入图片描述

%%
% sphere 函数用于生成单位球面的 x,y,z 的坐标,以用于 surf or mesh。默认生成 20 x 20 个面的球面。
% [X,Y,Z] = sphere(...)  % 在三个 (n+1)x(n+1)的矩阵内存储 n x n 个球面的坐标

[x, y, z]= sphere(20);
surf(x, y, z);  % 绘制球面的坐标
view(3);

在这里插入图片描述

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值