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

数据的读取和保存-MATLAB

1 序言

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

笔者每次在进行上述操作时,都需要百度如何“选中目标文件”以及如何“将处理好的数据保存到目标文件中”,对这一块的知识点的掌握不够系统化。为了以后减少百度的次数,故对选中目标文件和保存到目标文件这两个步骤进行了梳理。

2 选中目标文件&数据读取

选中目标文件和数据读取是连在一起的,它们合在一起的意思是读取存放在目标文件里目标位置的数据。数据读取没有太多可讲的,选择目标文件后,只要已知数据存放在文件里的位置以及类型即可读取对应的数据。

选中目标文件需要已知目标文件存放的路径(下文简称文件路径)和目标文件的名称(文件名称),一般会有如下4个场景:

  1. 文件路径未知,文件名未知;
  2. 文件路径未知,文件名已知;
  3. 文件路径已知,文件名未知;
  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自有的构建系统&#xff0…...

合肥工业大学数据库实验报告

✅作者简介: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 双链表 - 根据索引来…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...