Matlab基础篇:数据输入输出
前言
数据输入和输出是 Matlab 数据分析和处理的核心部分。良好的数据输入输出能够提高工作效率,并确保数据处理的准确性。本文将详细介绍 Matlab 数据输入输出的各种方法,包括导入和导出数据、数据处理和数据可视化。
一、导入数据
Matlab 提供了多种方法导入外部数据文件,包括文本文件、Excel 表格、数据库等。以下是几种常用的导入数据方法。
- 导入文本文件
- 使用
load函数导入简单的文本文件:
- 使用
data = load('data.txt'); % 导入 txt 文件
- 使用
fscanf和fgets函数读取特定格式的文本文件:
fid = fopen('data.txt', 'r'); % 打开文件data = fscanf(fid, '%f'); % 逐行读取数据fclose(fid); % 关闭文件
- 导入 CSV 文件
- 使用
csvread函数导入 CSV 文件:
- 使用
csv_data = csvread('data.csv'); % 读取 CSV 文件
- 使用
readtable函数导入 CSV 文件,并将数据存储在一个表中,便于后续处理:
table_data = readtable('data.csv'); % 读取 CSV 文件到表
- 导入 Excel 文件
- 使用
xlsread函数导入 Excel 文件:
- 使用
[num, txt, raw] = xlsread('data.xlsx'); % 读取 Excel 文件
- 使用
readmatrix和readcell函数导入 Excel 文件:
matrix_data = readmatrix('data.xlsx'); % 读取 Excel 文件中的数值数据cell_data = readcell('data.xlsx'); % 读取 Excel 文件中的所有数据
- 从数据库导入数据
- 通过
database函数连接到数据库,并使用 SQL 查询语句进行数据导入:
- 通过
conn = database('database_name', 'username', 'password'); % 连接到数据库curs = exec(conn, 'SELECT * FROM table_name'); % 执行 SQL 查询curs = fetch(curs); % 获取查询结果db_data = curs.Data; % 保存数据close(conn); % 关闭数据库连接
以下是几种常用的导入数据方法总结:
| 导入方法 | 函数 | 示例 | 说明 |
|---|---|---|---|
| 文本文件 | load | data = load('data.txt'); | 适用于简单数字文本文件 |
| 文本文件 | fscanf, fgets | fscanf(fid, '%f'); | 适用于特定格式的文本文件 |
| CSV 文件 | csvread | csv_data = csvread('data.csv'); | 导入 CSV 文件 |
| CSV 文件 | readtable | table_data = readtable('data.csv'); | 导入 CSV 文件到表 |
| Excel 文件 | xlsread | [num, txt, raw] = xlsread('data.xlsx'); | 导入 Excel 文件 |
| Excel 文件 | readmatrix, readcell | matrix_data = readmatrix('data.xlsx'); | 导入 Excel 文件中的数据 |
| 数据库 | database, exec, fetch | conn = database(...); curs = exec(...); | 从数据库导入数据 |
二、导出数据
在数据处理和分析完毕之后,常常需要将结果导出到文件中保存或与他人共享。Matlab 提供了多种导出数据的方法。
- 导出到文本文件
- 使用
save函数导出变量到.mat文件(Matlab 专用格式):
- 使用
save('result.mat', 'data'); % 将变量 data 保存到 result.mat 文件
- 使用
fprintf函数导出数据到文本文件:
fid = fopen('result.txt', 'w'); % 打开文件fprintf(fid, '%.2f\n', data); % 将数据写入文件fclose(fid); % 关闭文件
- 导出到 CSV 文件
- 使用
csvwrite函数将数据导出到 CSV 文件:
- 使用
csvwrite('result.csv', data); % 将数据保存到 CSV 文件
- 使用
writetable函数将表格导出到 CSV 文件:
writetable(table_data, 'result.csv'); % 将表格数据保存到 CSV 文件
- 导出到 Excel 文件
- 使用
xlswrite函数将数据导出到 Excel 文件:
- 使用
xlswrite('result.xlsx', data); % 将数据保存到 Excel 文件
- 使用
writematrix和writecell函数将数据导出到 Excel 文件:
writematrix(matrix_data, 'result.xlsx'); % 将矩阵数据保存到 Excel 文件writecell(cell_data, 'result.xlsx'); % 将元胞数据保存到 Excel 文件
以下是几种常用的导出数据方法总结:
| 导出方法 | 函数 | 示例 | 说明 |
|---|---|---|---|
| 文本文件 | save | save('result.mat', 'data'); | 保存到 Matlab 专用格式 |
| 文本文件 | fprintf | fprintf(fid, '%.2f\n', data); | 导出到文本文件 |
| CSV 文件 | csvwrite | csvwrite('result.csv', data); | 保存到 CSV 文件 |
| CSV 文件 | writetable | writetable(table_data, 'result.csv'); | 将表格保存到 CSV 文件 |
| Excel 文件 | xlswrite | xlswrite('result.xlsx', data); | 保存到 Excel 文件 |
| Excel 文件 | writematrix, writecell | writematrix(data, 'result.xlsx'); | 将矩阵或元胞保存到 Excel 文件 |
三、数据处理
在数据导入之后,我们常常需要对数据进行一些处理,如排序、筛选、统计和清理。
- 数据排序
- 使用
sort函数对数组或矩阵进行排序:
- 使用
sorted_data = sort(data); % 对数组进行排序sorted_matrix = sortrows(matrix_data); % 对矩阵的行进行排序
- 数据筛选
- 使用逻辑索引对数据进行筛选:
filtered_data = data(data > 10); % 筛选出大于 10 的数据
- 数据统计
- 使用 Matlab 提供的统计函数对数据进行统计分析:
mean_data = mean(data); % 计算平均值std_data = std(data); % 计算标准差median_data = median(data); % 计算中位数
- 数据清理
- 使用
isnan和fillmissing函数对缺失数据进行标记和处理:
- 使用
data_with_nan = [1, 2, NaN, 4];idx_nan = isnan(data_with_nan); % 标记缺失数据data_filled = fillmissing(data_with_nan, 'linear'); % 使用线性插值填补缺失数据
以下是常见数据处理方法的总结:
| 数据处理方法 | 函数 | 示例 | 说明 |
|---|---|---|---|
| 数据排序 | sort, sortrows | sorted_data = sort(data); | 对数组或矩阵进行排序 |
| 数据筛选 | 逻辑索引 | filtered_data = data(data > 10); | 筛选出特定条件的数据 |
| 数据统计 | mean, std, median | mean_data = mean(data); | 计算平均值、中位数、标准差 |
| 数据清理 | isnan, fillmissing | data_filled = fillmissing(data_with_nan, 'linear'); | 处理缺失数据 |
四、数据可视化
数据处理完毕之后,我们可以通过数据可视化来更直观地展示数据。Matlab 提供了丰富的数据可视化工具,能够绘制各种类型的图形,用于数据分析和展示。
- 绘制基本图形
- 二维线图:使用
plot函数绘制基本的二维线图。
- 二维线图:使用
x = 0:0.1:10;y = sin(x);plot(x, y); % 绘制二维线图title('Sine Wave');xlabel('x');ylabel('sin(x)');grid on; % 打开网格
- 散点图:使用
scatter函数绘制二维散点图。
x = randn(100, 1);y = randn(100, 1);scatter(x, y, 'filled');title('Scatter Plot');xlabel('x');ylabel('y');grid on;
- 柱状图:使用
bar函数绘制柱状图。
categories = {'A', 'B', 'C', 'D', 'E'};values = [10, 20, 30, 25, 15];bar(categorical(categories), values);title('Bar Graph');xlabel('Category');ylabel('Values');
- 绘制高级图形
- 箱线图:使用
boxplot函数绘制箱线图,用于显示数据分布和异常值。
- 箱线图:使用
data = randn(100, 5);boxplot(data);title('Box Plot');xlabel('Category');ylabel('Values');
- 热图:使用
heatmap函数绘制热图,主要用于展示矩阵数据的大小和分布。
data = rand(10, 10);heatmap(data);title('Heatmap');
- 三维表面图:使用
surf函数绘制三维表面图。
[X, Y] = meshgrid(-3:0.1:3, -3:0.1:3);Z = sin(sqrt(X.^2 + Y.^2));surf(X, Y, Z);title('Surface Plot');xlabel('X');ylabel('Y');zlabel('Z');grid on;
下表总结了一些常用的绘图函数及其示例:
| 图形类型 | 函数 | 示例 | 说明 |
|---|---|---|---|
| 二维线图 | plot | plot(x, y); | 绘制二维线图 |
| 散点图 | scatter | scatter(x, y, 'filled'); | 绘制二维散点图 |
| 柱状图 | bar | bar(categorical(cat), values); | 绘制柱状图 |
| 箱线图 | boxplot | boxplot(data); | 绘制箱线图 |
| 热图 | heatmap | heatmap(data); | 绘制热图 |
| 三维表面图 | surf | surf(X, Y, Z); | 绘制三维表面图 |
- 数据绘图示例
下面通过一个综合示例,展示如何进行数据读取、处理、绘图的全过程。
示例:从 CSV 文件中导入数据,进行简单的数据处理,并绘制几种图形展示结果。
假设有一个 CSV 文件 data.csv,内容如下:
ID,Value1,Value2
1,10,100
2,15,110
3,20,105
4,25,95
5,30,120
- 导入数据
% 导入数据到表格data = readtable('data.csv');
- 数据处理
% 计算 Value1 和 Value2 的平均值mean_val1 = mean(data.Value1);mean_val2 = mean(data.Value2);% 筛选出 Value1 大于 20 的数据filtered_data = data(data.Value1 > 20, :);
- 数据可视化
% 绘制折线图figure;subplot(2, 2, 1);plot(data.ID, data.Value1, '-o', 'DisplayName', 'Value1');hold on;plot(data.ID, data.Value2, '-s', 'DisplayName', 'Value2');title('Line Plot of Values');xlabel('ID');ylabel('Values');legend('show');grid on;% 绘制散点图subplot(2, 2, 2);scatter(data.Value1, data.Value2, 'filled');title('Scatter Plot of Value1 vs Value2');xlabel('Value1');ylabel('Value2');grid on;% 绘制柱状图subplot(2, 2, 3);bar(categorical(data.ID), [data.Value1, data.Value2]);title('Bar Graph of Values');xlabel('ID');ylabel('Values');legend({'Value1', 'Value2'});grid on;% 绘制箱线图subplot(2, 2, 4);boxplot([data.Value1, data.Value2], {'Value1', 'Value2'});title('Box Plot of Values');ylabel('Values');
通过此综合示例,我们从 CSV 文件中导入数据,进行了简单的数据处理,并绘制了折线图、散点图、柱状图和箱线图,用于展示和分析数据。
五、总结
本文详细介绍了 Matlab 的数据输入输出功能,包括如何导入和导出文本文件、CSV 文件、Excel 文件以及数据库中的数据。同时,通过数据处理方法,如数据排序、筛选、统计和清理,对导入的数据进行了处理。最后,介绍了数据可视化工具,通过各种图形展示数据处理结果。

相关文章:
Matlab基础篇:数据输入输出
前言 数据输入和输出是 Matlab 数据分析和处理的核心部分。良好的数据输入输出能够提高工作效率,并确保数据处理的准确性。本文将详细介绍 Matlab 数据输入输出的各种方法,包括导入和导出数据、数据处理和数据可视化。 一、导入数据 Matlab 提供了多种方…...
MySQL字典数据库设计与实现 ---项目实战
软件准备✍:Mysql与Navicat可视化命令大全 ----项目实战 文章前言部分 目录 一.摘要 二.设计内容 三.项目实现 一.摘要 本项目关注于字典数据库表结构的设计和数据管理。通过现有的sql文件,实现system_dict_type和system_dict_data两个数据表。随后…...
python数据分析——数据预处理
数据预处理 前言一、查看数据数据表的基本信息查看info()示例 查看数据表的大小shape()示例 数据格式的查看type()dtype()dtypes()示例一示例二 查看具体的数据分布describe()示例 二…...
【Python】使用matplotlib绘制图形(曲线图、条形图、饼图等)
文章目录 一、什么是matplotlib二、matplotlib 支持的图形三、如何使用matplotlib1. 安装matplotlib2. 导入matplotlib.pyplot3. 准备数据4. 绘制图形5. 定制图形6. 显示或保存图形7. (可选)使用subplots创建多个子图注意事项: 四、常见图形使…...
vue下载本地xls模版静态文件
需求导入的下载模版不想放在服务器放在前端本地下载静态资源最简单的方式直接访问 public 文件夹下的文件 方法一:使用静态文件路径 将文件放在 public 文件夹中: 把你的文件从 src/assets 移动到 public 文件夹。例如:public/template.xls。…...
手机开热点,里面的WPA2-Personal和WPA3-Personal的区别
WPA2-Personal和WPA3-Personal这两种协议都是用来保护无线网络安全的,但它们在加密强度和安全性方面有所不同。 WPA2-Personal (Wi-Fi Protected Access 2) WPA2是目前最广泛使用的Wi-Fi安全标准之一。它使用AES(Advanced Encryption Standard…...
算法课程笔记——点积叉积
算法课程笔记——点积叉积...
详解 | DigiCert EV代码签名证书
简介 DigiCert EV 代码签名证书是一种高级别的代码签名证书,它不仅提供了标准代码签名证书的所有安全特性,还增加了额外的身份验证流程,以确保软件开发者或发布者的身份得到最严格验证。这对于提升软件的信任度、防止恶意篡改和确保下载安全…...
pdf压缩大小,PDF压缩大小不影响清晰度
你是否曾为PDF文件过大而烦恼?想要分享或上传文件时,却因为它的体积而束手无策?别担心,今天我将为大家分享一些简单实用的 PDF 压缩技巧,让你的文件轻松压缩pdf。 打开“轻云处理pdf官网”, 的网站。然后上…...
项目管理必备工具:2024年十大软件排行榜
有效的工具不仅可以帮助团队保持组织性,还能显著提高项目完成率。选择合适的项目管理软件,对于实现这些目标至关重要。 在2024年的各大权威榜单中,排名前十的项目管理软件包括:PingCode、Worktile(国内)&am…...
SOLIDWORKS专业版2024价格
SOLIDWORKS Professional 专业版,带有 ECAD/MCAD 协作、自动成本估算、协作功能、设计和工程图检查、复杂的零部件库以及高级真实感渲染。 1. ECAD/MCAD协作:SOLIDWORKS专业版提供了强大的ECAD/MCAD协作功能,使得设计团队可以更高效地进行跨…...
【外快业务】百度网盘扫码源码系统部署过程记录。
视频地址:【【自动发货项目】电脑PC/移动端扫码登录百度网盘项目源码,支持多人组团购买源码】 https://www.bilibili.com/video/BV1oD421W7oj/?share_sourcecopy_web&vd_source74cf265c4965f8c17f8e89bd8c29408d 1.远程连接服务器执行,…...
lucene原理
一、正排索引 Lucene的基础层次结构由索引、段、文档、域、词五个部分组成。正向索引的生成即为基于Lucene的基础层次结构一级一级处理文档并分解域存储词的过程。 索引文件层级关系如图1所示: 索引:Lucene索引库包含了搜索文本的所有内容࿰…...
华为、H3C交换机常用巡检命令
一、硬件状态、IOS版本信息检查 • display clock:显示系统时间。 • display version:查看交换机的版本信息和最近一次重新启动的时间。 • display enviroment:显示设备温度。 • display device:显示单板运行状态。 • di…...
网络安全 DVWA通关指南 SQL Injection(SQL注入)
DVWA SQL Injection 文章目录 DVWA SQL InjectionLowMediumHighImpossible SQL注入漏洞基本原理 Web应用程序对用户输入的数据校验处理不严或者根本没有校验,致使用户可以拼接执行SQL命令。 可能导致数据泄露或数据破坏,缺乏可审计性,甚至导致…...
【Linux】版本
文章目录 linux版本1、linxu技术版本(内核版本)2、linux商业化版本(发行版本) 区别 linux版本 1、linxu技术版本(内核版本) 内核:提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程…...
代码随想录算法训练营day47
题目:188.买卖股票的最佳时机IV、309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费 参考链接:代码随想录 188.买卖股票的最佳时机IV 思路:本题和上题的最多两次买卖相比,改成了最多k次,使用类似思路&…...
【Android面试八股文】Kotlin内置标准函数apply的原理是什么?
文章目录 一、原理解析二、 示例代码2.1 具体示例应用场景2.2 为什么使用 `apply`?apply 是 Kotlin 标准库中的一个高阶函数,它的作用是在对象上执行一个代码块,并返回这个对象本身。其原理涉及到函数类型和接收者对象的结合使用。 一、原理解析 函数类型与接收者对象的结合…...
RegionClip环境安装踩坑指南
RegionClip环境安装 RegionClip环境安装)问题1问题2问题3问题4问题5 RegionClip环境安装) 特别强调,不要单独去安装detectron2,会出现model.clip不存在的错误,通过python -m pip install -e RegionCLIP就可以问题1 问题:torch-c…...
MySQL数据类型、运算符以及常用函数
MySQL数据类型 MySQL数据类型定义了数据的大小范围,因此使用时选择合适的类型,不仅会降低表占用的磁盘空间, 间接减少了磁盘I/O的次数,提高了表的访问效率,而且索引的效率也和数据的类型息息相关。 数值类型 浮点类型…...
OpenClaw日志分析:Qwen3-32B每日自动汇总服务器异常事件
OpenClaw日志分析:Qwen3-32B每日自动汇总服务器异常事件 1. 为什么需要自动化日志分析 作为一名运维工程师,我每天早晨的第一项工作就是检查服务器日志。Nginx的错误日志、系统内核日志、应用服务的异常输出……这些文件分散在不同的目录,格…...
VLP-16数据包解析实战:从原始字节到三维点云
1. VLP-16数据包解析入门指南 第一次拿到VLP-16激光雷达的原始UDP数据流时,我完全被那一串串十六进制数字搞懵了。这就像收到一封用密码写成的信,明明知道里面藏着宝贵的三维环境信息,却不知道如何破译。经过几个项目的实战积累,我…...
高效解决消息撤回问题的RevokeMsgPatcher完整指南
高效解决消息撤回问题的RevokeMsgPatcher完整指南 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcode.com/GitHub_Trendi…...
【Linux】新手必看:高频指令实战演练Part One
1. Linux命令行初体验:从零到上手 第一次打开Linux终端时,那种黑底白字的界面确实容易让人发懵。记得我刚开始接触时,连最基本的"怎么退出当前命令"都要百度半天。但别担心,命令行其实就像学骑自行车 - 刚开始摇摇晃晃&…...
STM32F103C8T6光敏云台DIY全流程:从硬件选型到代码调试(附避坑指南)
STM32F103C8T6光敏云台DIY全流程:从硬件选型到代码调试(附避坑指南) 去年夏天,我在阳台上搭建了一个小型太阳能发电系统,却发现电池板效率总是不稳定。经过观察发现,阳光角度变化导致光照强度差异显著。这个…...
为什么最终选 TQUIC:T-Box QUIC 库选型的约束过滤与源码验证
"为什么选 TQUIC?XQUIC 是阿里的,也有 MPQUIC 和 FEC,而且是 C 实现,不是更容易集成吗?"架构师的这个问题,比"为什么不用 quiche"更难回答。quiche 没有 MPQUIC,一句话就能…...
FreeRTOS项目瘦身技巧:如何精简文件并优化工程结构(基于Keil环境)
FreeRTOS项目瘦身实战:Keil环境下的工程精简与结构优化 在嵌入式开发中,FreeRTOS因其轻量级和开源特性成为许多项目的首选RTOS。但随着项目迭代,工程往往会积累大量冗余文件,导致编译速度下降、存储空间浪费。本文将分享一套系统化…...
WPF拖拽实战避坑指南:从DragDropEffects到QueryContinueDrag,解决拖拽后鼠标事件失效的诡异问题
WPF拖拽实战避坑指南:从DragDropEffects到QueryContinueDrag,解决拖拽后鼠标事件失效的诡异问题 当你在WPF项目中实现拖拽功能时,是否遇到过这样的场景:拖拽操作完成后,控件的MouseMove事件突然"失灵"&#…...
AI专著撰写新方法:借助工具实现从构思到成书的完美跨越
创新与AI工具助力学术专著写作 创新是学术专著的核心,也是写作过程中最具挑战性的部分。一本合格的专著不应只是对现有研究成果的简单罗列,而需要提出贯穿全书的独到见解、理论框架或研究方法。在浩如烟海的学术文献中,挖掘尚未被探索的研究…...
终极指南:3分钟掌握QMK Toolbox键盘固件刷写技巧
终极指南:3分钟掌握QMK Toolbox键盘固件刷写技巧 【免费下载链接】qmk_toolbox A Toolbox companion for QMK Firmware 项目地址: https://gitcode.com/gh_mirrors/qm/qmk_toolbox 你是否曾想过让你的机械键盘拥有独一无二的按键布局?或者想为心爱…...
