MATLAB学习文档(二十三)

目录

数组练习题

[Q1: 创建结构体数组student](#Q1: 创建结构体数组student)

[Q2: 分析JSON文件中的宝可梦数据](#Q2: 分析JSON文件中的宝可梦数据)

[Q3: 导入文件夹中的xml和图片文件](#Q3: 导入文件夹中的xml和图片文件)

[Q4: 筛选工作区的数据](#Q4: 筛选工作区的数据)

[Q5: 王者荣耀玩家数据分析](#Q5: 王者荣耀玩家数据分析)

[Q6: 公历和农历日期转换](#Q6: 公历和农历日期转换)

[Q7: 839个站点的每日气温数据分析](#Q7: 839个站点的每日气温数据分析)

[第11章 数据可视化](#第11章 数据可视化)

[9.1 数据可视化开篇](#9.1 数据可视化开篇)

[9.1.1 常见的图片类型](#9.1.1 常见的图片类型)

数据可视化图形

流程与方法图

结构展示图

实验与观测影像图

地理空间图

[9.1.2 数据可视化的步骤](#9.1.2 数据可视化的步骤)

(1)全面了解数据集

(2)表达什么数据信息

(3)选择可视化工具和技术

(4)解读图形

[9.1.3 数据的分类:数值型和分类型](#9.1.3 数据的分类:数值型和分类型)

数值型数据

分类型数据

特殊情况

[9.1.4 学术图形的绘制原则](#9.1.4 学术图形的绘制原则)

规范

简洁

专业

美观

[9.1.5 网站推荐](#9.1.5 网站推荐)

[9.1.6 资源推荐](#9.1.6 资源推荐)

[9.1.7 数据可视化的工具分类](#9.1.7 数据可视化的工具分类)

(1)无需编程的可视化工具

(2)需要编程的可视化工具

(3)在线数据可视化网站

[9.1.8 MATLAB的版本建议和绘图函数](#9.1.8 MATLAB的版本建议和绘图函数)


数组练习题

Q1: 创建结构体数组student

Matlab 复制代码
% 创建一个包含3个学生的结构体数组

students(1).name = 'Alice';

students(1).age = 20;

students(1).score = 90;

students(2).name = 'Bob';

students(2).age = 22;

students(2).score = 85;

students(3).name = 'Charlie';

students(3).age = 21;

students(3).score = 92;

% 显示结构体数组

disp(students);

Q2: 分析JSON文件中的宝可梦数据

Matlab 复制代码
% 假设有一个名为pokemon.json的文件

filename = 'pokemon.json';

% 读取JSON文件

data = jsondecode(fileread(filename));

% 显示部分数据以验证

disp(data(1));  % 显示第一个宝可梦的数据

% 分析示例:计算所有宝可梦的平均身高

average_height = mean([data.height]);

% 显示结果

disp(['Average Height: ', num2str(average_height)]);

Q3: 导入文件夹中的xml和图片文件

Matlab 复制代码
% 假设xml和图片文件都在当前文件夹的subfolder子文件夹中

folder = 'subfolder';

xmlFiles = dir(fullfile(folder, '*.xml'));

imgFiles = dir(fullfile(folder, '*.jpg'));  % 假设图片为jpg格式

% 读取第一个xml文件

xmlData = xmlread(fullfile(xmlFiles(1).folder, xmlFiles(1).name));

% 读取第一个图片文件

imgData = imread(fullfile(imgFiles(1).folder, imgFiles(1).name));

% 显示图片

imshow(imgData);

Q4: 筛选工作区的数据

Matlab 复制代码
% 假设有一个名为data的数组,包含多列数据

% 筛选条件:选择score列大于等于90的行

filteredData = data(data.score >= 90, :);

% 显示筛选后的数据

disp(filteredData);

Q5: 王者荣耀玩家数据分析

Matlab 复制代码
% 假设有一个名为players的数组,包含玩家数据

% 分析示例:计算平均胜率

average_win_rate = mean(players.win_rate);

% 显示结果

disp(['Average Win Rate: ', num2str(average_win_rate), '%']);

% 进一步分析:找出胜率最高的玩家

[max_win_rate, idx] = max(players.win_rate);

best_player = players(idx, :);

% 显示最佳玩家信息

disp('Best Player:');

disp(best_player);

Q6: 公历和农历日期转换

Matlab 复制代码
% 公历转农历(需要自定义函数或调用第三方库,此处为示意)

solar_date = datetime(2023, 10, 1);

lunar_date = solarToLunar(solar_date);  % 假设solarToLunar为转换函数

% 显示农历日期

disp(['Lunar Date: ', lunar_date]);

% 农历转公历(同样需要自定义函数或调用第三方库)

lunar_date = '2023-08-11';

solar_date = lunarToSolar(lunar_date);  % 假设lunarToSolar为转换函数

% 显示公历日期

disp(['Solar Date: ', solar_date]);

Q7: 839个站点的每日气温数据分析

Matlab 复制代码
% 假设有一个名为temperature的数据矩阵,每行代表一个站点,每列代表一天

% 分析示例:计算每个站点的平均气温

average_temperatures = mean(temperature, 2);  % 计算每行的平均值

% 显示部分结果

disp('Average Temperatures for Some Stations:');

disp(average_temperatures(1:10));  % 显示前10个站点的平均气温

% 可视化:绘制某个站点的气温变化图

station_id = 1;  % 选择第一个站点

plot(temperature(station_id, :));

title(['Temperature Trend for Station ', num2str(station_id)]);

xlabel('Day');

ylabel('Temperature (°C)');

第11章 数据可视化

知识点总结来源:《MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)》。

9.1 数据可视化开篇

9.1.1 常见的图片类型

数据可视化图形

折线图、散点图、柱状图、饼图、直方图、热力图等

以其清晰的视觉效果,直观地展示数据的分布、趋势和相互关联性,极大地增强了定量分析的直观性和理解度。

流程与方法图

流程图、算法图等

以其逻辑性和顺序性,清晰地呈现研究方法、实验步骤或理论逻辑框架,为读者提供了对操作序列和理论构造的深刻理解。

结构展示图

分子结构图、化合物模型、工程机械设计图等

以其精细的描绘,详细地展现了从微观到宏观各层面的结构组成,促进了对复杂系统深层次的理解。

实验与观测影像图

显微镜图像、扫描电子显微镜图像、X光图像等

这些直接记录的实验现象或样本特征,为研究发现的真实性和细节提供了有力的验证。

地理空间图

地图、地理信息系统(GIS)图像等

在地理学、生态学及环境研究中,展示了地理位置、分布模式和地域性特征,为相关领域的研究提供了空间维度的视角和分析工具。

9.1.2 数据可视化的步骤

(1)全面了解数据集

首先,要审视手头上的数据类型和范围。这涉及到对数据集的全面了解,包括数据的来源、结构和可能的局限性。

(2)表达什么数据信息

其次,明确想要通过数据传达的信息。这需要确定数据分析的目标,以及希望观众从中获得的关键结论。

(3)选择可视化工具和技术

接着,选择合适的可视化工具和技术。这一步要求根据数据的特点和信息目标,选择最能清晰表达数据关系和模式的图形类型。

(4)解读图形

最后,对生成的图形进行解读,验证其是否准确传达了预期信息。这一步是对可视化结果的审视,确保图形不仅在视觉上吸引人,而且在内容上具有说服力。

要想得到完美的可视化图形,在上述 4 个步骤中都要反复进行思索。

9.1.3 数据的分类:数值型和分类型

数值型数据

表示的是数量或度量,通常可进行数学运算。

可以是离散的(如人数、产品的数量),

也可以是连续的(如温度、价格)。

分类型数据

又称为定性数据或名义数据,表示的是类别或属性,比如性别、品牌名称等。

可以是有序的,比如级别(低级、中级和高级),

也可以是无序的,比如血型(A、B、O、AB等)。

特殊情况

(1)时间点数据可以视为数值型数据的一种特殊形式,用于描述具体的时刻;

(2)当分类型数据的类别数量庞大时,如学生的姓名或商品评论,它们通常被视为一般的文本数据,用于描述个体的独特性。

(3)在某些情况下,虽然数据以数值形式呈现,但其本质上表示的是类别或属性。

例如,在问卷调查中,经常使用1表示"是",0表示"否",这样的数据虽然以数值形式存在,但应视为分类型数据。

9.1.4 学术图形的绘制原则

规范

需符合投稿期刊的格式和分辨率要求。

图形的大小、字体、坐标、图例、轴名等需规范。

图形要高清、不要将图形截图放在论文中。

简洁

图形应该清晰地表达数据的信息。

同一张图上尽量避免信息过载,图形上表达的信息过多时,反而会让读者难以专注于作者所要展示的核心结论。

专业

选择合适的图形类型以全面反映数据,思考如何更好表达数据。

确保图形类型与数据内容相匹配,提高图形专业性。

不要刻意去套用不熟悉或比较冷门的图形。

美观

图形应美观,能吸引眼球。

精心选择配色方案、构图和比例。

提升自己的审美能力,优化图形的呈现效果。

9.1.5 网站推荐

网站汇总了市面上广泛使用的数据可视化图形,并为每一种图形提供了详细的说明和示例

9.1.6 资源推荐

FT可视化词典是由FT(Financial Times,金融时报)出品的一个可视化效果合辑,其中包含了多种精心挑选的数据可视化图形。

可视化词典旨在协助用户设计出内容丰富、有意义的数据可视化作品。

9.1.7 数据可视化的工具分类

在数据可视化领域,工具的选择多种多样,总体可分为三大类:

(1)无需编程的可视化工具

(Excel、Power BI、Origin、Tableau等)

通过直观的图形用户界面进行操作,无需编写复杂的代码,即可轻松实现数据可视化。

对于非专业编程人员来说,这些工具提供了便捷、高效的解决方案。

(2)需要编程的可视化工具

(MATLAB、Python、R语言、D3.js、Echarts等)

特侧重于提供高度定制化和灵活性的数据可视化方案。

它们需要用户具备一定的编程知识,以便根据实际需求进行个性化设置和定制。

(3)在线数据可视化网站

(raw graphs、plotdb、Flourish等)

这些网站无需用户下载桌面应用,只需在网页上即可轻松实现数据可视化。

它们通常提供了丰富的图形类型和易用的界面设计,让用户可以快速地制作和分享数据可视化作品。

9.1.8 MATLAB的版本建议和绘图函数

MATLAB绘图函数

最低版本要求:为确保课程演示的顺利进行,请使用不低于2017a的版本。低于此版本可能会遇到较多代码兼容性问题,导致运行错误(尤其是涉及到字符串数组相关的内容)。

代码差异点:高版本的MATLAB在某些情况下提供了更加精简的绘图语法。绘制同一张图形,使用高版本的MATLAB可能仅需一行代码就能搞定,而使用低版本MATLAB需要多行代码。

新的图形类型:近年来,新版本的MATLAB推出了多种高级的可视化图形。例如,在2020b版推出了"气泡图"(bubblechart)和"分簇散点图"(swarmchart)、 2023b版新增了"甜甜圈图"(donutchart)等。

使用表格数据类型绘图:少部分绘图函数支持使用表格数据类型(Table)进行绘图。

相关推荐
民乐团扒谱机3 小时前
【微实验】激光测径系列(四)关于硬件上的一些实验
计算机视觉·matlab·激光测径
Allen_LVyingbo4 小时前
医疗科研管理系统到院级生命科学平台的升级路径
python·信息可视化·健康医疗·ai编程
MoRanzhi12035 小时前
11. Pandas 数据分类与区间分组(cut 与 qcut)
人工智能·python·机器学习·数学建模·分类·数据挖掘·pandas
码界筑梦坊5 小时前
276-基于Python的爱奇艺视频数据可视化分析系统
开发语言·python·信息可视化
你好~每一天14 小时前
2025 中小企业 AI 转型:核心岗技能 “怎么证、怎么用”?
人工智能·百度·数据挖掘·数据分析·职业·转行
YangYang9YangYan15 小时前
金融分析师技能提升路径与学习资源指南
金融·数据分析
weixin_5259363316 小时前
金融大数据处理与分析
hadoop·python·hdfs·金融·数据分析·spark·matplotlib
唐兴通个人16 小时前
清华大学AI领导力AI时代领导力AI变革领导力培训师培训讲师专家唐兴通讲授数字化转型人工智能组织创新实践领导力国央企国有企业金融运营商制造业
人工智能·数据挖掘
码上地球17 小时前
大数据成矿预测系列(三) | 从统计模型到机器学习:为何机器学习是成矿预测的新前沿?
大数据·机器学习·数据挖掘