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 地图点 - 地理坐标字符串转换 环境࿱…...
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> 时,确实有一些全局的 API 和宏可以直接使用,而不需要显式地从 vue 包中导入它们。这是因为 <script setup> 是专门为了提供更简洁的组件编写方式而设计的,它内部利用了编译时的语法糖。 以下是在…...
Facebook Dating:社交平台的约会新体验
随着社交媒体的普及和技术的发展,传统的社交方式正在经历革新,尤其是在约会这个领域。Facebook作为全球领先的社交平台,推出了Facebook Dating,旨在为用户提供一个全新的约会体验。本文将探讨Facebook Dating如何重新定义社交平台…...
【系统架构设计 每日一问】五 搜索型业务,采用MySQL+ES,如何保证数据一致性
将数据从MySQL同步到Elasticsearch(ES)中并保证一致性是一个常见的需求,特别是在需要快速全文搜索和分析功能的应用中。以下是一些常见的方法和实践来确保数据一致性: 1. 使用双写策略 描述:在应用程序层面ÿ…...
缓存穿透,缓存击穿,缓存雪崩
目录 介绍 缓存穿透 缓存击穿 缓存雪崩 原因 影响 解决方案 缓存穿透 防止缓存穿透->空值缓存案例 缓存击穿 使用互斥锁解决缓存击穿 介绍 缓存穿透 定义:缓存穿透是指用户查询数据,缓存和数据库中都不存在该数据(一般是发起恶意…...
运维 | 清理 Linux 磁盘空间方法汇总
清理 Linux 磁盘空间方法汇总 前言 系统磁盘不够用或占满了,导致部分应用或程序无法正常使用。 本章节将记录一些常用或常见的方法清理系统磁盘(持续更新中)。 常见操作 查看磁盘使用情况 cd / df -Th查找大文件和目录(根目…...
googleTest 源码主线框架性分析——TDD 01
TDD,测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推…...
Python:对常见报错导致的崩溃的处理
Python的注释: mac用cmd/即可 # 注释内容 代码正常运行会报以0退出,如果是1,则表示代码崩溃 age int(input(Age: )) print(age) 如果输入非数字,程序会崩溃,也就是破坏了程序,终止运行 解决方案…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
