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

MATLAB中matfile用法

目录

语法

说明

示例

创建 MAT 文件对象

启用对 MAT 文件的写访问权限

加载整个变量

将整个变量保存至现有 MAT 文件

加载和保存部分变量

确定变量大小

参数说明

局限性

提示


        matfile的功能是访问和更改 MAT 文件中的变量,而不必将文件加载到内存中。

语法

matObj = matfile(filename)
matObj = matfile(filename,'Writable',isWritable)

说明

        matObj = matfile(filename) 创建 matlab.io.MatFile 对象,该对象连接到 filename 指定的 MAT 文件。

        该 MAT 文件对象允许您直接访问和更改 MAT 文件中的变量,而不必将变量加载到内存中

        matObj = matfile(filename,'Writable',isWritable) 启用或禁用对文件的写访问权限。将 isWritable 指定为 true 或 false。

        使用 MAT 文件对象来访问和更改 MAT 文件中的变量,而不必将文件加载到内存中。您可以加载或保存部分变量。与 load 和 save 命令相比,使用 MAT 文件对象部分加载和保存变量所需的内存较少。

示例

创建 MAT 文件对象

        为文件创建 MAT 文件对象。matfile 函数构造一个与 MAT 文件对应的 matlab.io.MatFile 对象。

matObj = matfile('myFile.mat')

启用对 MAT 文件的写访问权限

        创建对象时,启用对 MAT 文件 myFile.mat 的写访问权限。

m = matfile('myFile.mat','Writable',true);

        也可以在创建 MAT 文件对象后通过设置 Writable 属性启用写访问权限。

m.Properties.Writable = true;

加载整个变量

        打开示例 MAT 文件 topography.mat。使用 MAT 文件对象从文件中读取变量 topo。MATLAB® 将整个变量 topo 加载到工作区中。

m = matfile('topography.mat');
topo = m.topo;

将整个变量保存至现有 MAT 文件

        创建包含一个数组的 MAT 文件,然后使用 MAT 文件对象向该文件中添加另一个数组。

        通过生成 20×20 数组 x 并将其保存到 myFile.mat 来创建一个 MAT 文件。

x = magic(20);
save('myFile.mat','x');

        创建 MAT 文件对象,该对象连接到现有的 MAT 文件。通过将 Writable 设置为 true 启用写访问权限。

m = matfile('myFile.mat','Writable',true);

        再生成一个 15×15 数组 y。使用 MAT 文件对象将 y 保存到 MAT 文件。使用圆点表示法(与访问结构体数组的字段类似)指定 MAT 文件中的变量。MATLAB® 向该文件添加名为 y 的变量。

y = magic(15);
m.y = y;

        显示 MAT 文件 myFile.mat 中存储的所有变量。

whos('-file','myFile.mat')Name       Size            Bytes  Class     Attributesx         20x20             3200  double              y         15x15             1800  double      

加载和保存部分变量

        使用 MAT 文件对象访问 MAT 文件中变量的特定部分。例如,您可以将数据保存到 MAT 文件中变量的子集,或将变量的子集读入 MATLAB® 工作区中。

        使用 MAT 文件对象将数据保存到文件 myFile2.mat 中的变量 y 的子集。首先,创建 MAT 文件对象 m。

m = matfile('myFile2.mat');

        下一步,创建一个数组并将其保存到变量 y 的一部分。使用圆点表示法(与访问结构体数组的字段类似)指定 MAT 文件中的变量。MATLAB® 将 20×20 数组插入由索引 (81:100,81:100) 指定的 y 的元素中。

m.y(81:100,81:100) = magic(20);

        将数组 y 的子集读取到新的工作区变量 z 中。MATLAB® 将 MAT 文件中由索引 (85:94,85:94) 指定的 10×10 子数组读取到工作区变量 z 中。

z = m.y(85:94,85:94);

确定变量大小

        确定变量的大小,然后计算各列的均值。打开示例 MAT 文件 stocks.mat。

filename = 'stocks.mat';
m = matfile(filename);

确定 stocks.mat 中变量 stocks 的大小。

[nrows,ncols] = size(m,'stocks');

        计算变量 stocks 中各列的均值。

avgs = zeros(1,ncols);
for i = 1:ncolsavgs(i) = mean(m.stocks(:,i));
end

参数说明

filename — MAT 文件的名称

MAT 文件的名称,指定为字符向量或字符串标量。

  • filename 可以包含完整路径或部分路径,否则 matfile 会在 MATLAB® 搜索路径中搜索文件。

  • 如果 filename 不包含扩展名,则 matfile 将追加 .mat。

  • 如果文件不存在,matfile 将会在首次对变量赋值时创建一个 7.3 版本的 MAT 文件。

isWritable — 启用写访问权限

        启用写访问权限,指定为 true 或 false。对于新建文件,默认值为 true;对于现有文件,默认值为 false。

  • ​true - 启用 MAT 文件对象对 MAT 文件的写访问权限。如果文件是只读的,请使用 fileattrib 函数更改系统权限。

  • false - 禁用 MAT 文件对象对 MAT 文件的写访问权限。

访问 MAT 文件对象属性

        使用语法 ObjectName.Properties.PropertyName 访问 MAT 文件对象属性,其中 PropertyName 是属性的名称。例如,可以使用语法 mObj.Properties.Source 访问连接到 MAT 文件对象 mObj 的 MAT 文件的源文件路径。

Source — 文件路径

        文件路径,以字符向量形式返回,其中包含 MAT 文件的完全限定路径。

Writable — 写访问权限状态

        MAT 文件对象的写访问权限状态,以 true 或 false 形式返回。

  • true - MAT 文件对象对 MAT 文件具有写访问权限。

  • false - MAT 文件对象对 MAT 文件具有只读访问权限。

局限性

  • 通过索引访问 MAT 文件中的部分变量时:

    • 不支持线性索引。必须指定所有维度的索引。

    • 不支持将复数值赋给实数数组的索引部分。

  • 对于 MAT 文件中的稀疏数组,MAT 文件对象:

    • 支持通过索引读取稀疏数组的子集。

    • 不支持通过索引对稀疏数组的子集写入(赋值)。

  • MAT 文件对象不支持对以下项目进行索引:

    • 表变量

    • 元胞数组的元胞

    • 字符串数组

    • 日期时间数组

    • 结构体数组字段

    • 用户定义的类

  • MAT 文件对象不支持使用 m 输出计算函数句柄。例如,如果 MAT 文件包含函数句柄 myfunc,则语法 m.myfunc() 将会尝试对该函数句柄进行索引,并且不会调用函数。

  • 在保存句柄对象时,MATLAB 保存对象的副本,而不是句柄的副本。因此,通过在保存对象的工作区中的对象句柄修改对象不会修改保存的句柄对象。

提示

  • 有效的部分加载和保存要求 7.3 版本 MAT 文件。要创建 7.3 版本 MAT 文件,请使用 '-v7.3' 选项调用 save 函数。例如,要将现有的名为 durer.mat 的 MAT 文件转换为 7.3 版本,请调用:

    load('durer.mat');
    save('mycopy_durer.mat','-v7.3');
  • 如果在索引中使用 end 关键字,则 MATLAB 会将整个变量都加载到内存中。对于非常大的变量,此加载操作将引发 Out of Memory 错误。请不要使用 end,而是使用 size 方法来确定变量的范围:

    sizeMyVar = size(matObj,'myVar')

相关文章:

MATLAB中matfile用法

目录 语法 说明 示例 创建 MAT 文件对象 启用对 MAT 文件的写访问权限 加载整个变量 将整个变量保存至现有 MAT 文件 加载和保存部分变量 确定变量大小 参数说明 局限性 提示 matfile的功能是访问和更改 MAT 文件中的变量,而不必将文件加载到内存中。 …...

Spring之Spring Bean的生命周期

Spring Bean的生命周期 通过BeanDefinition获取bean的定义信息调用构造函数实例化beanBean的依赖注入处理Aware接口(BeanNameAware、BeanFactoryAware、ApplicationContextAware)Bean的后置处理器BeanPostProcessor-前置初始化方法(Initiali…...

OSINT 开源情报中的地理定位方法

了解 OSINT 中的地理定位技术、如何获取地理位置数据以及如何将地理定位用于各种调查场景。 OSINT 中的地理定位基础知识 OSINT 代表开源情报,指的是从免费公共来源合法收集的有关个人或组织的信息。这包括在互联网上以及书籍、公共图书馆报告、报纸文章、新闻稿、…...

Java面试题系列 - 第17天

Java中的代理模式与动态代理 背景说明:代理模式是一种结构型设计模式,用于在客户端和目标对象之间提供一个代理或占位符。在Java中,动态代理技术允许在运行时创建代理对象,这在AOP(面向切面编程)和RPC&…...

开发环境搭建

1、Ubuntu 系统设置 root 用户密码 新安装的ubuntu没有设置 root 用户密码,打开终端,输入 sudo passwd root 执行命令后依次输入密码 2、虚拟机设置网络适配器 3、Ubuntu 系统下搭建 FTP 服务器 sudo apt-get update sudo apt-get install vsftpd sudo apt-get install vim…...

【NLP】关于参数do_sample的解释

在自然语言处理(NLP)领域,特别是在使用神经网络模型进行文本生成时,do_sample是一个常见的参数,用于控制模型生成文本的方式。具体来说,do_sample参数决定模型是否采用随机采样(sampling&#x…...

Vbox虚拟机+Ubuntu motest测试drm

1. 效果演示 大家做学习drm的时候,没有硬件测试平台不方便测试,这里给大家演示下如何基于Vbox虚拟机Ubuntu测试drm的一些功能,先看下演示视频。 没有光标测试: demo_vwmfgx_test_drm 带有光标测试: demo_vwmfgx_drm_with_cursor 可以看到,有…...

ArcGIS Pro SDK (九)几何 15 转换

ArcGIS Pro SDK (九)几何 15 转换 文章目录 ArcGIS Pro SDK (九)几何 15 转换1 创建地理转换2 创建复合地理变换3 创建投影转换4 创建高压基准变换5 创建复合高压基准变换6 决定转换7 地图点 - 地理坐标字符串转换 环境&#xff1…...

Spring IOC DI --- 认识IOC DI

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 文章目录 认识Ioc & DIIoc是什么?DI是什么? 认识Ioc & DI 我们知道,Spring 是一个开源框架,让我们的开发更加简单.但是更加具体来说,实际上Spring 是包含了众多工具方法的Ioc容器 …...

常用的python程序汇总——入门级

只用于记录最近的一些日常程序。 目录 前言 一、文件和目录管理 1.读取文件结构 读取所有文件夹和文件 读取到N级子文件夹和文件 只读取到N级子文件夹 2.遍历文件并处理(复制、删除) 说明: 二、数据分析和处理 三、数据可视化 四、…...

被问到MQ消息已丢失,该如何处理?

在分布式系统中,消息中间件(如 RabbitMQ、RocketMQ、Kafka、Pulsar 等)扮演着关键角色,用于解耦生产者和消费者,并确保数据传输的可靠性和顺序性。尽管我们通常会采取多种措施来防止消息丢失,如消息持久化、…...

open3d:ransac分割多个平面(源码)

1、背景介绍 随机采样一致性算法(RANSAC Random Sample Consensus)是一种迭代的参数估计算法,主要用于从包含大量噪声数据的样本中估计模型参数。其核心思想是通过随机采样和模型验证来找到数据中最符合模型假设的点。因此,只要事先给定要提取的参数模型,即可从点云中分割…...

Github 2024-07-17 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-07-17统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量非开发语言项目3Python项目3Rust项目2TypeScript项目2MDX项目1项目化学习 创建周期:2538 天协议类型:MIT LicenseStar数量:161973 个Fork数量…...

vue3中Composition API写法 <script setup>标签中哪些可以不用导入即可使用?

在 Vue 3 中使用 <script setup> 时&#xff0c;确实有一些全局的 API 和宏可以直接使用&#xff0c;而不需要显式地从 vue 包中导入它们。这是因为 <script setup> 是专门为了提供更简洁的组件编写方式而设计的&#xff0c;它内部利用了编译时的语法糖。 以下是在…...

Facebook Dating:社交平台的约会新体验

随着社交媒体的普及和技术的发展&#xff0c;传统的社交方式正在经历革新&#xff0c;尤其是在约会这个领域。Facebook作为全球领先的社交平台&#xff0c;推出了Facebook Dating&#xff0c;旨在为用户提供一个全新的约会体验。本文将探讨Facebook Dating如何重新定义社交平台…...

【系统架构设计 每日一问】五 搜索型业务,采用MySQL+ES,如何保证数据一致性

将数据从MySQL同步到Elasticsearch&#xff08;ES&#xff09;中并保证一致性是一个常见的需求&#xff0c;特别是在需要快速全文搜索和分析功能的应用中。以下是一些常见的方法和实践来确保数据一致性&#xff1a; 1. 使用双写策略 描述&#xff1a;在应用程序层面&#xff…...

缓存穿透,缓存击穿,缓存雪崩

目录 介绍 缓存穿透 缓存击穿 缓存雪崩 原因 影响 解决方案 缓存穿透 防止缓存穿透->空值缓存案例 缓存击穿 使用互斥锁解决缓存击穿 介绍 缓存穿透 定义&#xff1a;缓存穿透是指用户查询数据&#xff0c;缓存和数据库中都不存在该数据&#xff08;一般是发起恶意…...

运维 | 清理 Linux 磁盘空间方法汇总

清理 Linux 磁盘空间方法汇总 前言 系统磁盘不够用或占满了&#xff0c;导致部分应用或程序无法正常使用。 本章节将记录一些常用或常见的方法清理系统磁盘&#xff08;持续更新中&#xff09;。 常见操作 查看磁盘使用情况 cd / df -Th查找大文件和目录&#xff08;根目…...

googleTest 源码主线框架性分析——TDD 01

TDD&#xff0c;测试驱动开发&#xff0c;英文全称Test-Driven Development&#xff0c;简称TDD&#xff0c;是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码&#xff0c;然后只编写使测试通过的功能代码&#xff0c;通过测试来推…...

Python:对常见报错导致的崩溃的处理

Python的注释&#xff1a; mac用cmd/即可 # 注释内容 代码正常运行会报以0退出&#xff0c;如果是1&#xff0c;则表示代码崩溃 age int(input(Age: )) print(age) 如果输入非数字&#xff0c;程序会崩溃&#xff0c;也就是破坏了程序&#xff0c;终止运行 解决方案&#xf…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...