当前位置: 首页 > news >正文

MATLAB建模与可视化技术文档:从二维到三维

目录

引言

一、二维数据可视化

1.1 基础二维绘图

1.2 高级二维图表

二、三维数据可视化

2.1 三维曲线与散点图

2.2 三维曲面图

三、高级可视化技巧

3.1 动态可视化

3.2 交互式可视化

四、建模应用实例:热传导模型

4.1 模型建立

4.2 结果可视化


引言

MATLAB作为一款强大的科学计算软件,在数学建模和可视化领域具有广泛应用。其集成的绘图功能使研究人员能够直观展示复杂数据,将抽象数学模型转化为直观图形。本文全面介绍MATLAB在建模与可视化方面的应用,涵盖二维和三维图形绘制技术,并提供可直接运行的代码示例。

一、二维数据可视化

1.1 基础二维绘图

% 基础线图与散点图
x = linspace(0, 4*pi, 100);
y_sin = sin(x);
y_cos = cos(x);figure('Position', [100, 100, 800, 600])
subplot(2,1,1)
plot(x, y_sin, 'LineWidth', 2, 'Color', [0.2, 0.5, 0.8])
hold on
plot(x, y_cos, '--', 'LineWidth', 2, 'Color', [0.8, 0.2, 0.4])
title('三角函数曲线', 'FontSize', 14, 'FontWeight', 'bold')
xlabel('x', 'FontSize', 12)
ylabel('函数值', 'FontSize', 12)
legend('sin(x)', 'cos(x)', 'Location', 'northeast')
grid on
set(gca, 'FontSize', 11)% 散点图示例
subplot(2,1,2)
data = randn(200,2);
scatter(data(:,1), data(:,2), 60, 'filled', ...'MarkerFaceAlpha', 0.6, ...'MarkerEdgeColor', 'k')
title('随机数据散点图', 'FontSize', 14)
xlabel('特征1', 'FontSize', 12)
ylabel('特征2', 'FontSize', 12)
colormap(jet)
colorbar

1.2 高级二维图表

% 多类型图表组合
x = 1:10;
y1 = [45, 62, 58, 75, 81, 92, 88, 76, 68, 55];
y2 = [28, 35, 42, 51, 49, 38, 45, 52, 60, 65];figure('Color', 'white', 'Position', [100, 100, 900, 500])% 条形图与折线图组合
yyaxis left
bar(x, y1, 'FaceColor', [0.3, 0.6, 0.9], 'EdgeColor', 'none')
ylabel('销售量', 'FontSize', 12)yyaxis right
plot(x, y2, '-o', 'LineWidth', 2.5, 'Color', [0.9, 0.4, 0.2], ...'MarkerSize', 8, 'MarkerFaceColor', 'w')
ylabel('增长率 (%)', 'FontSize', 12)title('销售数据分析', 'FontSize', 16)
xlabel('月份', 'FontSize', 12)
legend('销售量', '增长率', 'Location', 'northwest')
set(gca, 'FontSize', 11, 'XGrid', 'on', 'YGrid', 'on', 'Box', 'off')

二、三维数据可视化

2.1 三维曲线与散点图

% 三维螺旋线
t = linspace(0, 10*pi, 500);
x = sin(t);
y = cos(t);
z = t/10;figure('Color', 'white', 'Position', [100, 100, 800, 700])
subplot(2,1,1)
plot3(x, y, z, 'LineWidth', 2.5, 'Color', [0.8, 0.2, 0.4])
grid on
title('三维螺旋线', 'FontSize', 14)
xlabel('X轴')
ylabel('Y轴')
zlabel('Z轴')
view(35, 30)% 三维散点图
subplot(2,1,2)
[X, Y, Z] = peaks(50);
scatter3(X(:), Y(:), Z(:), 40, Z(:), 'filled')
title('Peaks函数三维散点图', 'FontSize', 14)
xlabel('X轴')
ylabel('Y轴')
zlabel('Z轴')
colormap(turbo)
colorbar
view(-45, 20)

2.2 三维曲面图

% 三维曲面绘制
[X, Y] = meshgrid(-3:0.1:3);
Z = sin(X) .* cos(Y) .* exp(-0.2*(X.^2 + Y.^2));figure('Color', 'white', 'Position', [100, 100, 1000, 800])% 基础曲面图
subplot(2,2,1)
surf(X, Y, Z)
title('基础曲面图', 'FontSize', 12)
shading interp
colormap(parula)
colorbar% 网格曲面图
subplot(2,2,2)
mesh(X, Y, Z)
title('网格曲面图', 'FontSize', 12)
colormap(hot)% 带轮廓的曲面图
subplot(2,2,3)
surfc(X, Y, Z)
title('带轮廓的曲面图', 'FontSize', 12)
shading flat
colormap(jet)% 光照效果曲面图
subplot(2,2,4)
surf(X, Y, Z, 'FaceAlpha', 0.9, 'EdgeColor', 'none')
title('光照效果曲面图', 'FontSize', 12)
light('Position', [1, 0.5, 0.5], 'Style', 'infinite')
lighting gouraud
material shiny
colormap(spring)
view(30, 45)sgtitle('三维曲面可视化示例', 'FontSize', 16, 'FontWeight', 'bold')

三、高级可视化技巧

3.1 动态可视化

% 三维动态演示
figure('Color', 'white', 'Position', [100, 100, 800, 600])
[x, y] = meshgrid(-2:0.2:2);
z = x .* exp(-x.^2 - y.^2);
h = surf(x, y, z);
shading interp
colormap(jet)
axis([-2 2 -2 2 -0.5 0.5])
title('动态曲面演示', 'FontSize', 14)% 创建动画
for az = -37.5:0.5:30view(az, 30)drawnowpause(0.05)
end

3.2 交互式可视化

% 交互式可视化
figure('Color', 'white', 'Position', [100, 100, 900, 700])
data = randn(500, 3);
scatter3(data(:,1), data(:,2), data(:,3), 50, data(:,3), 'filled')
title('交互式三维散点图 (旋转/缩放/平移)', 'FontSize', 14)
xlabel('X轴')
ylabel('Y轴')
zlabel('Z轴')
colormap(turbo)
colorbar
rotate3d on% 添加数据游标
dcm = datacursormode(gcf);
set(dcm, 'UpdateFcn', @(src, event) sprintf('X:%.2f\nY:%.2f\nZ:%.2f',...event.Position(1), event.Position(2), event. Position(3)))

四、建模应用实例:热传导模型

4.1 模型建立

% 热传导方程数值解
L = 1;           % 金属棒长度
T = 0.5;         % 总时间
nx = 50;         % 空间离散点数
nt = 1000;       % 时间离散点数
alpha = 0.01;    % 热扩散系数dx = L/(nx-1);
dt = T/nt;% 初始条件 (中心加热)
u = zeros(nx, nt);
u(round(nx/2), 1) = 100;% 边界条件
u(1, :) = 0;
u(nx, :) = 0;% 有限差分求解
for k = 1:nt-1for i = 2:nx-1u(i, k+1) = u(i, k) + alpha*dt/dx^2 * (u(i+1, k) - 2*u(i, k) + u(i-1, k));end
end

4.2 结果可视化

% 热传导结果可视化
x = linspace(0, L, nx);
t = linspace(0, T, nt);figure('Color', 'white', 'Position', [100, 100, 1200, 500])% 三维曲面图
subplot(1,2,1)
[X, T] = meshgrid(x, t);
surf(X, T, u', 'EdgeColor', 'none')
title('热传导过程三维可视化', 'FontSize', 14)
xlabel('位置 (m)', 'FontSize', 12)
ylabel('时间 (s)', 'FontSize', 12)
zlabel('温度 (°C)', 'FontSize', 12)
colormap(jet)
colorbar
view(30, 45)% 二维时间切片图
subplot(1,2,2)
hold on
time_points = [1, 100, 300, 600, 1000];
colors = lines(length(time_points));for i = 1:length(time_points)idx = time_points(i);plot(x, u(:, idx), 'LineWidth', 2.5, ...'Color', colors(i,:), ...'DisplayName', sprintf('t=%.3fs', t(idx)))
endtitle('不同时刻温度分布', 'FontSize', 14)
xlabel('位置 (m)', 'FontSize', 12)
ylabel('温度 (°C)', 'FontSize', 12)
legend('show', 'Location', 'northeast')
grid on
set(gca, 'FontSize', 11)

http://www.dtcms.com/a/337228.html

相关文章:

  • snprintf
  • 《Python学习之使用标准库:从入门到实战》
  • 104、【OS】【Nuttx】【周边】文档构建渲染:安装 Sphinx 扩展(上)
  • 从零到一构建企业级GraphRAG系统:GraphRag.Net深度技术解析
  • Python Ovito统计多晶晶粒数量
  • 领域驱动设计(DDD)中的“核心领域逻辑与基础设施分离”原则
  • Maven 生命周期和插件
  • RocketMQ是什么?
  • Day7--滑动窗口与双指针--1695. 删除子数组的最大得分,2958. 最多 K 个重复元素的最长子数组,2024. 考试的最大困扰度
  • 消息队列中的推模式与拉模式
  • C++/Java双平台表单校验实战:合法性+长度+防重复+Tab顺序四重守卫
  • 【从0开始学习Java | 第14篇】集合(上)
  • Day8--滑动窗口与双指针--1004. 最大连续1的个数 III,1658. 将 x 减到 0 的最小操作数,3641. 最长半重复子数组
  • 考问通系统测试分析报告
  • Golang 语言中的指针操作
  • Android中使用RxJava实现网络请求与缓存策略
  • 实习两个月总结
  • 通义万相Wan2.1- 阿里推出的开源视频生成大模型
  • 从哲学(业务)视角看待数据挖掘:从认知到实践的螺旋上升
  • Elasticsearch查询中的track_total_hits参数
  • 【网络安全实验报告】实验五:网络嗅探及安全性分析
  • 在阿里云 CentOS Stream 9 64位 UEFI 版上离线安装 Docker Compose
  • CentOS 7更换国内镜像源
  • CentOS 7安装OpenVASGVM指南
  • 国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—ARM + DSP、RISC-V核间通信开发案例
  • [数据结构] ArrayList 与 顺序表
  • OVS:ovn为什么默认选择Geneve作为二层隧道网络协议?
  • 【Day 30】Linux-Mysql数据库
  • 大数据计算引擎(三)——Elasticsearch入门
  • uart串口 day57