机器学习(matlab版)| lesson 2 data存储格式

这篇博客介绍了MATLAB中用于图像读取、显示和信息获取的函数,如`imread`和`imfinfo`。还展示了如何使用`datastore`处理大量图像数据,包括设置读取参数、获取文件标签以及数据预处理。此外,文章通过一个实例展示了如何利用`datastore`处理表格数据,进行气候稳定性的分析,涉及数据筛选、FFT变换等操作。
摘要由CSDN通过智能技术生成

参考:B站 爱学习的布尔玛转载的学习教程

Image

包括:GIF JPG TIFF PNG HDF FITS BMP

A=imread(FILENAME,FMT):读取灰度图像或者彩色图像

INFO=imfinfo(FILENAME,FMT):返回一个图像信息

%读取显示图像,并显示图像信息
imdata=imread('D:\desktop\matlab_code\ML\另一个课\L3\dataset\Mass\00029579_005.png');
figure;
imshow(imdata,[],'border','tight');
info=imfinfo('D:\desktop\matlab_code\ML\另一个课\L3\dataset\Mass\00029579_005.png')

一些常用函数: 

Datastore

适用于读取大量data/data存在结构情况下适用。

DS=datastore(LOCATION)  LOCATION一般是一个资料夹

%datastore
dirname='D:\desktop\matlab_code\ML\另一个课\L3\dataset';
ds=datastore(dirname,'type','image',...%data的路径
                        'IncludeSubfolders',true,...%是否有子资料夹
                        'LabelSource','foldernames',...%文件夹名字作为data的标签,监督学习
                        'ReadFcn',@customreader);%读取,后面是自己定义的函数名字

 更多函数:

 

ds.Files%文件路径
ds.Labels%文件标签
ds.countEachLabel%统计每种标签数目
shuffle_ds=ds.shuffle%打乱数据
shuffle_ds.Labels
%ds.ReadSize=5;%改变read一次读取的数目

[img,info]=ds.read;%info是原始数据的信息
figure;imshow(img);
imgall=ds.readall;
%换一个类型
ds1=datastore("Data_Entry_2017.csv",'type','tabular');%读取tabular类型的数据
ds1.VariableNames%数据的表头
ds1.ReadSize%一次read读取的数据量
tabledata=ds1.read;%读取20000个数据
tabledata.PatientAge;%用户年龄那一列的数据
tabledata(:,3:4);%类似于数据切片
tabledata(:,3:4).Variables%3 4列的数值,当3 4 列中有非数字值时会报错
tabledata.Properties.VariableNames%table的数据表头
tabledata.Properties.VariableUnits%table的数据单位

变量tabledata里的数据,类似excel

Tables

常用函数

 

一个实例

有一些天气数据

 想要比较1993年和2015年温度稳定情况

1 利用datastore读取数据

2 筛选出2015和1993年的温度数据

3 对数据进行FFT,观察频谱成分

其中,FFTEnergy是自己定义好的,进行快速傅里叶变换的函数,返回频率值和频率幅值

代码

%一个实例,天气资料,研究气候是否稳定,可以看其频谱,温度频率来描述温度变化情况
%FFT 要比较1993 2015年
tableds=datastore('.\Weather','type','tabular');
tableds.VariableNames %看看数据表头的名字
tableds.SelectedVariableNames={'EST','MaxTemperatureF'};%选取两列我们需要的数据
tableds.preview%展示几行,看看对不对

Alltemp=tableds.readall;%全部加载进来
datainfo=Alltemp{:,1};%年月份数据
y=year(datainfo);%提取年份
%找到年份对应的索引
ind_1993=find(y==1993);
ind_2015=find(y==2015);
%保存对应年份的温度信息
tempdata=Alltemp{:,2};
temp1993=tempdata(ind_1993);
temp2015=tempdata(ind_2015);
%绘出时域信息
figure;
subplot(121);plot(1:365,temp1993,'b',1:365,temp2015,'r');grid on;
title("Temperature");xlabel("Days");ylabel("Degree");legend('1993',"2015");
%进行FFT,绘出频域信息
SampTime=86400;
[p1993,f1993]=FFTEnergy(temp1993',SampTime);
[p2015,f2015]=FFTEnergy(temp2015',SampTime);

subplot(122);plot(f1993,p1993,'b',f2015,p2015,'r');set(gca,'YScale','log');grid on;
title("FFTdata");xlabel("Frequency(rad/s)");ylabel("Magnitude");legend('1993',"2015");

绘图结果

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值