数据的读取和保存-MATLAB
1 序言
在进行数据处理时,经常需要写代码对保存在文件中的数据进行读取→处理→保存的操作,流程图如下:

笔者每次在进行上述操作时,都需要百度如何“选中目标文件”以及如何“将处理好的数据保存到目标文件中”,对这一块的知识点的掌握不够系统化。为了以后减少百度的次数,故对选中目标文件和保存到目标文件这两个步骤进行了梳理。
2 选中目标文件&数据读取
选中目标文件和数据读取是连在一起的,它们合在一起的意思是读取存放在目标文件里目标位置的数据。数据读取没有太多可讲的,选择目标文件后,只要已知数据存放在文件里的位置以及类型即可读取对应的数据。
选中目标文件需要已知目标文件存放的路径(下文简称文件路径)和目标文件的名称(文件名称),一般会有如下4个场景:
- 文件路径未知,文件名未知;
- 文件路径未知,文件名已知;
- 文件路径已知,文件名未知;
- 文件路径已知,文件名已知。
下面对上述四个场景的实现方法进行详细介绍。
2.1 文件路径未知,文件名未知
这种场景的实现方法是直接采用弹框的形式,当程序运行后在弹框界面人为打开文件路径,然后在文件路径下选中目标文件。关键函数为uigetfile,用法如下:
[file,path,indx] = uigetfile(filter)输出参数意义如下:
file—返回的文件名;
path—返回的文件路径;
indx—返回的在对话框中选择的筛选器的索引。输入参数意义如下:
filter—指定文件扩展名,根据该扩展名筛选对话框中显示的文件。
实现“文件路径未知,文件名未知”的代码如下:
clear
close all
clc
%--------存放的路径未知,文件名未知
[name,path,index] = uigetfile('*') %选择目标文件,*表示可以选择所有格式的文件
data = csvread(fullfile(path,name)); %读取目标文件中的数据
运行效果如下:

选中目标文件'data.csv',然后点击打开即可读取目标文件中的数据。
2.2 文件路径未知,文件名已知;
这种场景的实现方法是直接采用弹框的形式,当程序运行后在弹框界面人为选中目标文件存放的路径。关键函数为uigetdir,用法如下:
selpath = uigetdir(path)输入参数的意义:
path为初始路径,当path为空时,弹框打开的是当前文件路径;
输出参数的意义:
selpath为选择的路径。
实现“文件路径未知,文件名已知”的代码如下:
clear
close all
clc
%--------存放的路径未知,文件名已知
path = uigetdir() %选择文件要存放的文件夹路径
name = 'data.csv'; %文件名
data = csvread(fullfile(path,name)); %读取数据
运行效果如下:

选中目标文件存放的路径'my_test',然后点击打开即可读取到目标文件中的数据。
2.3 文件路径已知,文件名未知
这种场景和“文件路径未知,文件名未知”相似,只需要弹框打开已知的文件路径,然后人为选中目标文件即可,关键函数也是uigetfile。
实现代码如下:
close all
clc
%--------文件路径已知,文件名未知
path = ''/Users/Desktop/matlab_code/folder_test/my_test'; %存放目标文件的路径
name = uigetfile('*','',path); %从文件路径下的所有文件选择目标文件
data = csvread(fullfile(path,name)); %读取数据
运行效果和场景“文件路径未知,文件名未知”相似,只是这个直接弹框出来的就是文件路径,如下:

选中目标文件'data.csv',然后点击打开即可读取目标文件中的数据。
2.4 文件路径已知,文件名已知
这种场景实现比较简单,直接将文件路径和文件名写死即可。
clear
close all
clc
%--------存放的路径已知,文件名已知
path = '/Users/Desktop/matlab_code/folder_test/my_test'; %存放目标文件的路径
name = 'my_test.csv'; %文件名
data = csvread(fullfile(path,name)); %读取数据
3 保存到目标文件
待数据处理完成后,需要将数据保存下来,一般会有两种场景:
① 将处理好的数据保存到原来的目标文件中,覆盖原始数据;
② 新建一个文件,将处理好的数据保存到新的文件中,原始目标文件不变。
场景①的实现代码如下:
%------将修改好的数据保存在原始文件里面 system('tskill excel'); %关闭所有打开的Excel文件 csvwrite(fullfile(path,name),data);%保存到原始文件里面其中data为修改好的数据。由于读取时打开可目标文件,需要先关闭Excel文件,再写入到原始目标文件里,否则会报错。
场景②的实现代码如下:
%-------将修改好的数据保存到新的文件夹里 path_new = fullfile(path,'new'); %新生成的数据包存放路径if ~exist(path_new)mkdir(path_new); %不存在文件名为new的文件夹,则新建一个end csvwrite(fullfile(path_new,name),data);其中data为修改好的数据。先在文件路径下新建一个名为‘new'的文件夹,再将数据保存到新建的文件夹里。
4 批量读取和保存
批量读取和保存的关键点是获取到所有目标文件的文件名,然后通过一个循环进行批量操作。关键函数是dir,用法如下:
dir()函数的调用方式有三种,分别为:
1、dir(’.’) 列出当前目录下所有子文件夹和文件;
2、dir(‘E:\Matlab’) 列出指定目录下所有子文件夹和文件;
3、dir(E:\Matlab,’*.csv’) 列出指定目录下后缀为.csv的文件。
批量操作的实现代码如下:
clear
close all
clc
path = uigetdir(); %选择文件存放的文件夹路径
excel_files = dir(fullfile(path,'*.csv')); %获取所有后缀是.csv的文件名,如果是’*‘则是获取所有格式的文件名
folder_nums = size(excel_files,1);% 文件夹里csv文件数
for i=1:folder_nums %获取所有文件夹名excel_file_names{i} = excel_files(i,1).name;
endfor i = 1:folder_numsexcel_file_names{i} %循环处理每个目标文件
end
5 案例
5.1 一个目标文件的读取和保存
读取一个文件路径已知,文件名已知的.csv里的数据,将数据的第一行和第二列改为200,然后将修改后的数据保存到原始的.csv文件里,同时在已知的文件路径下新建一个名'new’的文件夹,将修改后的数据也保存到新建的文件夹下,保存的文件名和原始文件名一样。
上述要求实现代码如下:
clear
close all
clc
%--------存放的路径未知,文件名已知
path = '/Users/Desktop/matlab_code/folder_test/my_test'; %存放目标文件的路径
name = 'data.csv';
data = csvread(fullfile(path,name)); %读取数据
data(2,2) = 200; %数据操作,将第2行第2列的数改为200%------将修改好的数据保存在原始文件里面
system('tskill excel'); %关闭所有打开的Excel文件
csvwrite(fullfile(path,name),data);%保存到原始文件里面%-------将修改好的数据保存到新的文件夹里
path_new = fullfile(path,'new'); %新生成的数据包存放路径if ~exist(path_new)mkdir(path_new); %不存在文件名为new的文件夹,则新建一个end
csvwrite(fullfile(path_new,name),data);
'done'
运行前:

运行后:

5.2 多个目标文件的批量读取和保存
读取多个文件路径已知,文件名未知的.csv里的数据,将数据的第一行和第二列改为200,然后将修改后的数据保存到原始的.csv文件里,同时在已知的文件路径下新建一个名'new’的文件夹,将修改后的数据也保存到新建的文件夹下,保存的文件名和原始文件名一样。
实现代码如下:
clear
close all
clc
path = '/Users/Desktop/matlab_code/folder_test/my_test'; %选择文件存放的文件夹路径
excel_files = dir(fullfile(path,'*.csv')); %获取所有后缀是.csv的文件名
folder_nums = size(excel_files,1);% 文件夹里csv文件数
for i=1:folder_nums %获取所有文件夹名excel_file_names{i} = excel_files(i,1).name;
endfor i = 1:folder_numstarget_path = fullfile(path,excel_file_names{i})data = csvread(target_path); %读取数据data(2,2) = 300; %数据操作,将第2行第2列的数改为100%------将修改好的数据保存在原始文件里面csvwrite(target_path ,data);%保存到原始文件里面%-------将修改好的数据保存到新的文件夹里path_new = fullfile(path,'new'); %新生成的数据包存放路径if ~exist(path_new)mkdir(path_new); %不存在文件名为new的文件夹,则新建一个endcsvwrite(target_path,data);
end
运行前:

运行后:

相关文章:
数据的读取和保存-MATLAB
1 序言 在进行数据处理时,经常需要写代码对保存在文件中的数据进行读取→处理→保存的操作,流程图如下: 笔者每次在进行上述操作时,都需要百度如何“选中目标文件”以及如何“将处理好的数据保存到目标文件中”,对这一…...
C++ 输入、输出和整数运算
【问题描述】 编写一个程序,读入两个整数,计算并输出他们的和、积、商和余数。 【输入形式】 程序运行到输入时,不要显示输入提示信息。 输入为两个整数(在问题描述中记作A和B,程序中请自定变量名),A和B使…...
Element Plus 解决组件显示英文问题
要解决Element Plus日历组件显示英文的问题,可以使用Element Plus提供的国际化功能,切换成中文语言。下面是一个简单的示例: 首先,在main.ts或者你的入口文件中引入Element Plus的中文语言包和Vue I18n: import { cr…...
sqlite3.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher
问题描述 sqlite3.NotSupportedError: deterministicTrue requires SQLite 3.8.3 or higher 解决方法 A kind of solution is changing the database from sqlite3 to pysqlite3. After acticate the virtualenv, install pysqlite. pip3 install pysqlite3 pip3 install …...
单线程介绍、ECMAScript介绍、操作系统Windows、Linux 和 macOS
目录 单线程介绍ECMAScript介绍操作系统Windows、Linux 和 macOS 👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富! 单线程介绍 单线…...
【Docker】iptables基本原理
在当今数字化时代,网络安全问题变得越来越重要。为了保护我们的网络免受恶意攻击和未经授权的访问,我们需要使用一些工具来加强网络的安全性。其中,iptables是一个强大而受欢迎的防火墙工具,它可以帮助我们控制网络流量并保护网络…...
微服务架构——笔记(3)Eureka
微服务架构——笔记(3) 基于分布式的微服务架构 本次笔记为 此次项目的记录,便于整理思路,仅供参考,笔者也将会让程序更加完善 内容包括:1.支付模块、2.消费者订单模块、支付微服务入驻Eureka、Eureka集群…...
网络编程套接字(2)——简单的TCP网络程序
文章目录 一.简单的TCP网络程序1.服务端创建套接字2.服务端绑定3.服务端监听4.服务端获取连接5.服务端处理请求6.客户端创建套接字7.客户端连接服务器8.客户端发起请求9.服务器测试10.单执行流服务器的弊端 二.多进程版的TCP网络程序1.捕捉SIGCHLD信号2.让孙子进程提供服务 三.…...
MySQL数据库的简单的面试题
1、MySQL有哪些锁机制 MySQL有以下几种机制: 行级锁:行极锁在mysql 中最常用的锁机制,它只针对表的某一行进行加锁不受影响。MySQL的行级锁分为共享锁和排他锁两种类型,共享锁和排它锁不能同时存在于一行。 表级锁:表…...
hbuilderx打包应用上传到app store构建版本的教程
简介: 将ipa上架app store的过程中,发现需要将打包的ipa文件上传到app store的构建版本里,但是苹果官方推荐的上传工具,只有xcode和transporter等工具,这些工具是不能安装在windows电脑的。那么有没有windows电脑的上传…...
第五届泰迪杯数据分析技能赛B题源码图片分享
需要B题源码以及第六届带队”指导“请私信本人,团队包含技能赛双一等,数学建模省一,泰迪杯挖掘国一,研究生队友。 去年一等作品可视化图如下,私信获取源码...
【小白专用】VSCode下载和安装与配置PHP开发环境(详细版) 23.11.08
1. 下载VSCode2. 解决VSCode下载速度特别慢3. 安装VSCode 一、VSCode介绍 VSCode 是一款由微软开发且跨平台的免费源代码编辑器;该软件支持语法高亮、代码自动补全、代码重构、查看定义功能,并且内置了命令行工具和 Git 版本控制系统。 二、官方下载地址…...
Qlik Sense : Fetching data with Qlik Web Connectors
目录 Connecting to data sources Opening a connector Connecting to a data source Authenticating the connector Defining table parameters Using standard mode or legacy mode Standard mode Connector overview Using multi-line input parameters to fetch da…...
聊一聊 tcp/ip 在.NET故障分析的重要性
一:背景 1. 讲故事 这段时间分析了几个和网络故障有关的.NET程序之后,真的越来越体会到计算机基础课的重要,比如 计算机网络 课,如果没有对 tcpip协议 的深刻理解,解决这些问题真的很难,因为你只能在高层做…...
利用梯度上升可视化卷积核:基于torch实现
利用梯度上升可视化卷积核 文章目录 前言基本原理版本和包结果展示 简单绘图修改源码绘图方法一 方法二(推荐) 报错解决总结 前言 基于梯度上升的可视化是一种常用的技术,用于理解卷积神经网络(CNN)中的卷积核是如何对…...
python+playwright 学习-85 启动参数 proxy 设置代理几种方式
前言 在使用playwright执行代码的时候,如需设置代理,可以在启动的时候加proxy 参数设置代理。 本篇总结下可以加proxy代理的几种方式。 launch 启动全局代理 launch 启动的时候设置全局代理,以下是示例 from playwright.sync_api import Playwright, sync_playwrightwit…...
Clion 搭建Qt projects
Qt projects Qt is a cross-platform C framework for creating GUI applications. Qt uses its own build system, qmake, and also supports building with CMake starting from the version Qt4. Qt是一款创建桌面程序的跨平台的C框架。qmake是Qt自有的构建系统࿰…...
合肥工业大学数据库实验报告
✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :hfut实验课设 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!没有人会关心你付出过多少…...
设计模式-装饰器模式(Decorator)
设计模式-装饰器模式(Decorator) 一、装饰器模式概述1.1 什么是装饰器模式1.2 简单实现装饰器模式1.3 使用装饰器模式的注意事项 二、装饰器模式的用途三、装饰器模式的实现方式3.1 通过接口和抽象类实现3.2 通过Java反射实现3.3 通过使用第三方库实现 一…...
Java 数据结构篇-实现双链表的核心API
🔥博客主页: 小扳_-CSDN博客 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 双链表的说明 1.1 双链表 - 创建 1.2 双链表 - 根据索引查找节点 1.3 双链表 - 根据索引插入节点 1.4 双链表 - 头插节点 1.5 双链表 - 尾插 1.6 双链表 - 根据索引来…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...
