在关联问题中,我们讲过如何利用python
将mat
文件存为excel
,但是excel
有个问题,那就是最多存储255
列数据,当我们数据很多的时候怎么办呢?
在这里,我选择mat
文件。
关联问题:
应用需求:
在这里,我有多个mat
文件,每个mat
文件都只有一行[1x4096]
的数据,现在我想把这些mat
文件合并起来。
应用分析:
根据前面我们知道,合并这些mat
文件不能再存到excel
里了,只能存入mat
中。
编程实现:
这里以合并两个mat
文件为例,其他多个同理,只需要for
一下即可。
Python版
首先,读取mat
文件并加载数据
1 2 3 4 5 6 7 8 |
import scipy.io as scio import numpy as np dataFile = 'mat\BigBuckBunny05.mat' dataFile2 = 'mat\BigBuckBunny06.mat' data = scio.loadmat(dataFile) data = data['BigBuckBunny05'] data2 = scio.loadmat(dataFile2) data2 = data2['BigBuckBunny06'] |
然后利用numpy
将data
和data2
按行合并
1 |
data = np.vstack((data,data2)) |
最后将data
保存为mat
字典即可。
1 |
scio.savemat('filename.mat', mdict={'filename': data}) |
Matlab版:
其实matlab
更加简单,这是MATLAB
完整程序,包含了循环读取操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
clc filepath='E:\00 大论文工作\10 第一部分工作\201904\3dcnn提取的特征\原始特征\'; %文件夹名字 for k = 1: 9 % 一共的个数 temp = cell2mat(struct2cell(load([filepath,'mat',num2str(k),'.mat']))); % 利用num2str表示1,2,3,4.。。[ ]里面的内容,用逗号或者空格连接都可以,最后就是一个字符串,就是mat的路径名,temp读出来是一个structure matname = char(fieldnames(temp));% 获取结构成员名称 data{k} = getfield(temp,matname);% 获取该名称下的成员内容,用 temp.usertrj_stay 也可以获得structure的值 end for k = 10: 99 % 一共的个数 temp = cell2mat(struct2cell(load([filepath,'mat',num2str(k),'.mat']))); % 利用num2str表示1,2,3,4.。。[ ]里面的内容,用逗号或者空格连接都可以,最后就是一个字符串,就是mat的路径名,temp读出来是一个structure matname = char(fieldnames(temp));% 获取结构成员名称 data{k} = getfield(temp,matname);% 获取该名称下的成员内容,用 temp.usertrj_stay 也可以获得structure的值 end for k = 100: 450 % 一共的个数 temp = cell2mat(struct2cell(load([filepath,'mat',num2str(k),'.mat']))); % 利用num2str表示1,2,3,4.。。[ ]里面的内容,用逗号或者空格连接都可以,最后就是一个字符串,就是mat的路径名,temp读出来是一个structure matname = char(fieldnames(temp));% 获取结构成员名称 data{k} = getfield(temp,matname);% 获取该名称下的成员内容,用 temp.usertrj_stay 也可以获得structure的值 end s1=cell2mat(struct2cell(load('qiyipuzong.mat'))); ll_staypoint = cat(1,data{:}); save('all_staypoint.mat'); |
注意事项:
这里关键是如何找到mat
的字典头
我们以上面的例子为例,我们是如何知道mat
中的索引是BigBuckBunny05
呢?如果这个文件是自己建的,当然没问题,如果是直接copy
来的,按一下步骤查找索引:
首先读取mat
文件,然后在下面设置断点:
运行debug
,查看data
的数据结构:
这里可以看到,BigBuckBunny05
即为ndarray
的索引。可以打开看看
确认之后即可读取该索引的数据。
本文最后更新于2022年10月28日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
11学习
我是个键盘侠,在网络上我天不怕地不怕,我可以秒天秒地秒空气。只要不面基,一切都好说,嘿嘿
肿么了,想要深入了解一下吗杰哥
@博主的乖儿子 如此甚好啊,突然有点想了解键盘侠的真实生活
牛牛牛
@我是博主的儿子 你可真是端起碗来吃饭,放下碗来骂爹
@马春杰杰 哈哈哈,你这碗我端不起来,太沉了
@我是博主的儿子 看你这昵称我就觉得搞笑。。
@马春杰杰 杰哥不要啊
@博主的嫩儿子 你想笑死我
@博主的嫩儿子 你说你也21岁的人了。。怎么还跟个傻子似的?
你是山东建筑大学的?哪个学院的?
好厉害
学习
厉害
谢邀
谢谢博主
牛
谢谢博主
学一下
学习一下
学习一下!!
学习下
想看一下呀
看看
11黑
学习matlab合并
学习下怎么用matlab合并mat文件
我想看看mat合并文件的代码
学习一下
挺好的
还可以
很不错
不错噢
不错哟
不错
不错,谢谢