MATLAB基础知识【8】绘图,peaks,sphere,积分

分组形式和堆叠形式的条形图

matlab 复制代码
y=[3,6,9,6;6,7,7,4;7,3,2,3;4,2,5,2;2,4,8,7;8,7,4,4];
bar(y)
figure
bar(y,'stack')
%'stack'这个参数指定条形图应该是堆叠的

三维线图、网线图、表面图和带渲染效果的表面图

matlab 复制代码
[x,y]=meshgrid(-2:0.2:2);
%生成两个二维矩阵x和y,它们表示一个网格
z=x.*exp(-x.^2-y.^2);
subplot(2,2,1),plot3(x,y,z)
subplot(2,2,2),mesh(x,y,z)
%mesh函数接受三个参数:x、y和z,分别表示网格的x、y和z坐标
subplot(2,2,3),surf(x,y,z)
subplot(2,2,4),surf(x,y,z),shading interp)

AI : meshgrid 是 MATLAB 中的一个函数,用于生成坐标网格。它接受两个或多个一维数组作为输入,并返回多维数组,这些数组可以用于在多维空间中定义一个网格。

函数语法

matlab 复制代码
[X, Y] = meshgrid(x, y)
[X, Y, Z] = meshgrid(x, y, z)

参数说明

  • x, y, z:一维数组,表示网格在各个维度上的坐标。
  • X, Y, Z:多维数组,表示网格在各个维度上的坐标点。

返回值

  • X, Y, Z:返回的数组具有相同的尺寸,每个元素代表网格中的一个点。例如,X(i, j)Y(i, j) 分别表示网格中第 i 行第 j 列点的 x 坐标和 y 坐标。

使用示例

matlab 复制代码
x = 1:3; % 定义 x 坐标
y = 4:6; % 定义 y 坐标
[X, Y] = meshgrid(x, y); % 生成网格

disp(X);
disp(Y);

输出结果:

markdown 复制代码
     1     2     3
     1     2     3
     1     2     3

     4     4     4
     5     5     5
     6     6     6

在这个例子中,meshgrid 函数生成了一个 3x3 的网格,其中 XY 分别表示网格中每个点的 x 坐标和 y 坐标。

注意事项

  • meshgrid 函数可以处理任意维度的输入,但最常用的是二维和三维。
  • 输入数组 x, y, z 必须是单调的,否则 meshgrid 函数可能无法正确生成网格。
  • meshgrid 函数在生成网格时,会自动进行广播,因此输入数组的大小不需要相同。

应用场景

meshgrid 函数在科学计算、工程设计和数据处理等领域有广泛的应用,例如:

  • 绘制二维和三维图形,如曲线图、曲面图等。
  • 计算多维空间中的函数值,如求解偏微分方程、计算插值等。
  • 生成采样网格,用于图像处理、计算机视觉等领域的算法实现。

总之,meshgrid 函数是一个非常有用的工具,可以帮助我们轻松地处理多维空间中的数据。

peaks函数的表面图

matlab 复制代码
surf(peaks(30));
%peaks 生成一个具有多个峰值和谷值的三维数据矩阵
%peaks(30) 生成一个30x30的矩阵,表示一个30x30网格上的高度值
%surf(peaks(30)) 使用 peaks(30) 生成的数据来绘制一个三维曲面图
figure
surf(peaks(30));
colormap(hot)
%设置图形颜色映射
figure
surf(peaks(30));
colormap(cool)
figure
surf(peaks(30));
colormap(lines)

sphere函数

matlab 复制代码
[x,y,z]=sphere(100);
%sphere(100)表示生成一个由100个径向等分点构成的球体
mesh(x,y,z)
%mesh函数创建一个三维网格图来显示球体
figure
mesh(x,y,z),hidden off
%设置hidden off来显示被遮挡的部分
figure
surf(x,y,z)
figure
z(16:30,1:5)=NaN*ones(size(z(16:30,1:5)));
%设置为NaN(Not a Number,非数),来模拟球体表面上的一个洞
surf(x,y,z)

改变为正方形

matlab 复制代码
[x,y,z]=sphere(30);
z(18:30,1:5)=NaN*ones(size(z(18:30,1:5)));
surf(x,y,z)
axis square
axis off

符号函数的导数

matlab 复制代码
syms a x;
f=[a,x^2,1/x;exp(a*x),log(x),sin(x)];
%定义了一个符号矩阵 f。矩阵 f 是一个 2x3 的矩阵,其中包含不同的符号表达式
df=diff(f,'x');
%diff 函数用于对符号表达式进行微分
disp(df);

解方程组

matlab 复制代码
syms a b c x y;
%声明了符号变量
eques=[a*x^2+b*y+c==0,x+y==0];
%定义了一个方程组
vars=[x,y];
%定义了要求解的变量列表
S=solve(eques,vars);
disp(S.x)
disp(S.y)
%分别显示 x 和 y 的解

绘制极坐标

matlab 复制代码
syms t
ezpolar(sin(3*t)*cos(3*t))
%ezpolar函数绘制一个极坐标图
figure
ezpolar('sin(4*t)*cos(3*t)',[0,2*pi])
%[0,2*pi]表示绘制图形的范围
matlab 复制代码
p=[4,-12,-14,5,9] ;
pd=polyder(p); 
%求导
pdfuhao=poly2sym(pd); 
%poly2sym 函数将求导后的系数向量 pd 转换成一个符号表达式 pdfuhao。这样做的目的是为了方便显示和进一步的操作
pi=polyint(p); 
%polyint 函数用于对多项式 p 进行不定积分
pifuhao=poly2sym(pi) ;
disp(pi)

二分法编程求方程

matlab 复制代码
f = @(x) tan(x) - x - 0.5;
%@ 符号表示定义一个匿名函数
a = 0;
b = 1.5;
tol = 1e-6;
max_iter = 100;
for i = 1:max_iter
    c = (a + b) / 2;
    fc = f(c);
    if abs(fc) < tol
        break;
    end
    if f(a) * fc < 0
        b = c;
    else
        a = c;
    end
end
fprintf('%.8f\n', c);
%c 是要输出的浮点数变量

如果 c 的值是 3.141592653589793,那么输出将会是 3.14159265

求pi的近似值

matlab 复制代码
% 初始化
pi_approx = 0;       % 累加值
true_pi = pi;        % MATLAB 内置的精确 π 值
n = 0;               % 项数计数器
sign = 1;            % 当前项的符号
tolerance = 1e-6;    % 误差要求

while abs(pi_approx * 4 - true_pi) >= tolerance
    pi_approx = pi_approx + sign / (2*n + 1);  
    % 加一项
    %sign:这是一个变量,表示当前加到pi_approx上的项的符号。在莱布尼茨公式中,符号交替变化,因此sign的值会在1和-1之间切换。
    sign = -sign;                             
    % 符号翻转
    n = n + 1;                                
    % 项数 +1
end

% 输出结果
fprintf('迭代次数: %d\n', n);
fprintf('近似的π值: %.10f\n', 4 * pi_approx);
fprintf('误差: %.10e\n', abs(4 * pi_approx - true_pi));

计算二重积分

matlab 复制代码
f = @(x, y) sin(x).^2 + sin(y).^2;

% 外层积分(对x从1到2)
I = integral(@(x) arrayfun(@(x0) integral(@(y) f(x0, y), 1, x0^2), x), 1, 2);

disp(['结果为:', num2str(I)])
相关推荐
wheeldown9 小时前
【数学建模】数据预处理入门:从理论到动手操作
python·数学建模·matlab·python3.11
小白的高手之路15 小时前
Matlab中的积分——函数int()和quadl()
matlab
机器学习之心18 小时前
PINN物理信息神经网络用于求解二阶常微分方程(ODE)的边值问题,Matlab实现
人工智能·神经网络·matlab·物理信息神经网络·二阶常微分方程
WangYan20221 天前
MATLAB 2023a深度学习工具箱全面解析:从CNN、RNN、GAN到YOLO与U-Net,涵盖模型解释、迁移学习、时间序列预测与图像生成的完整实战指南
深度学习·matlab·matlab 2023a
迎风打盹儿1 天前
均匀圆形阵抗干扰MATLAB仿真实录与特点解读
matlab·信号处理·抗干扰·均匀圆阵·波束合成
数维学长9862 天前
【全网最全】《2025国赛/高教杯》C题 思路+代码python和matlab+文献 一到四问 退火算法+遗传算法 NIPT的时点选择与胎儿的异常判定
开发语言·算法·matlab
dlraba8022 天前
用遗传算法破解一元函数最大值问题:从原理到 MATLAB 实现
开发语言·matlab
996终结者2 天前
Python数据分析与处理(二):将数据写回.mat文件的不同方法【超详细】
python·matlab·数据分析
我是水怪的哥2 天前
在时间序列中增加一个阶跃对长期趋势变化的影响
matlab·lake
lingchen19062 天前
MATLAB矩阵及其运算(三)矩阵的创建
算法·matlab·矩阵