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)])
相关推荐
hie988942 小时前
MATLAB锂离子电池伪二维(P2D)模型实现
人工智能·算法·matlab
88号技师8 小时前
2025年6月一区-田忌赛马优化算法Tianji’s horse racing optimization-附Matlab免费代码
开发语言·算法·matlab·优化算法
m0_5557629012 小时前
matlab 教程
matlab
freexyn2 天前
Matlab自学笔记六十一:快速上手解方程
数据结构·笔记·matlab
ytttr8732 天前
matlab通过Q学习算法解决房间路径规划问题
学习·算法·matlab
梦子要转行2 天前
matlab/Simulink-全套50个汽车性能建模与仿真源码模型9
开发语言·matlab·汽车
Zevalin爱灰灰3 天前
MATLAB GUI界面设计 第六章——常用库中的其它组件
开发语言·ui·matlab
曹勖之12 天前
simuilink和ROS2数据联通,Run后一直卡在Initializting
windows·matlab·simulink·ros2
Zevalin爱灰灰12 天前
MATLAB GUI界面设计 第三章——仪器组件
开发语言·ui·matlab