参考: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");
绘图结果