《matlab数学建模方法与实践》第三章 数据的处理
3.1数据的获取
3.1.1从Excel中读取数据
a= xlsread(\’路径\’,n(sheetn),\’A(n-1):Bn(读入的数据范围)\’)
3.1.2从TXT中读取数据
3.1.2.1.1 同种类型的数据
随机生成矩阵 a = linspace(1,30,8);
linspace(x1,x2xn)
其中x1、x2、N分别为起始值、终止值、元素个数。若默认N,默认点数为100。
linspacce(起始位,最后一位,个数)
把变量a以ASCII码的形式储存 save f:\ex.txt(任意文档名的TXT格式文件) a – ascii;
使用load函数 读取TXT文档a b = load(\’文档所在的路径 反斜杠\\'(记得路径的引号)
3.1.2.1.2 不同种类型的字符或数据 分类读取数据
常见读取表格类数据
含有表头 以及 字符串 浮点数 整数等等的数据
调用格式[A,B,C,…] = textread(\’filename\’,’format’,N,‘headerlines’,M)
filename 数据文件路径,format变量的字段格式(%s %f %n ) N读取次数 ,headerlines 从M+1行开始读取
3.1.3
读取图片
%% 读取图片
% 《MATLAB数学建模方法与实践》(《MATLAB在数学建模中的应用》升级版),北航出版社,卓金武、王鸿钧编著.
clc, clear, close all %清除所有数据
a1=imread(\’000.bmp\’);%读取图片 A = inread(\’filename\’)
[m,n]=size(a1);size函数用法 m n 矩阵的行列数
%% 批量读取图片
dirname = \’ImageChips\’;dirname 文件名
dir函数可以获得指定文件夹下的所有子文件夹和文件,并存放在一个文件结构的数组中
(
name — 文件名 date — 修改日期 bytes — 文件大小 isdir — 目录是1,不是为0 datenum — matlab中特定的修改日期
使用方法:
dir ( \’ . \’ ) 列出当前目录下的所有子文件夹和子文件
dir ( \’ G:\Matlab \’) 列出指定目录下的所有子文件夹和文件
dir( \’ *.m\’ )列出当前目录后缀是.m文件的所有文件
比如我的要求是获得某一路径下所有后缀为.3gp的文件个数:
-
D1=dir(fullfile(filedir,\’*.3gp\’));
-
filename={D1.name}\’; %name要进行转置
-
precount=size(filename,1);
-
)
fullfile函数作用是利用文件各部分信息创建并合成完整文件名
files = dir(fullfile(dirname, \’*.bmp\’));获得某一路径下所有后缀为.bmp的文件个数
a=zeros(m,n,19);%生成0矩阵 zeros(m, n); % 生成一个m*n的零矩阵
(zeros(m); % 生成一个m*m的零矩阵(即m阶方阵)
zeros(m, n, k, ...); % 生成一个m*n*k*...的零矩阵
zeros(size(A)); % 生成一个与矩阵A的维度一致的零矩阵)
pic=[];数组
for ii = 1:length(files)%%循环语句 for循环 就是获取files的长度值,然后i 循环从1到length(files) 循环
filename = fullfile(dirname, files(ii).name);
a(:,:,ii)=imread(filename);
pic=[pic,a(:,:,ii)];
end
double(pic);double(y)表示将参数y转为双精度浮点类型,如果y是字符,将返回字符的ASCII码值
figure
imshow(pic,[])
循环读取图片
close all;
clear all;
pic_content=dir([\’D:\WorkSpace\matlab\saveas\’ \’\*.jpg\’]);
frame_num=length(pic_content);%帧数
for n = 1:frame_num
frame=strcat(num2str(n), \’.jpg\’);
I1=imread(frame); % 依次读入各帧图像
frame
end
3.2数据的预处理
3.3数据的统计
3.4数据可视化
plot 最基本的绘图命令
%读取数据
clc,clear al,close all
X=xlsread(\’F:\Cha3\DataVisual\dataTableA2.xlsx\’);
%绘制变量dv1的基本分布
N = size(X,1)返回X的行数
id = 1:N; id 从1到N
figure 创建画图窗口
plot( id\’, X(:,2),\’LineWidth\’,1) %plot(x,y) LineWidth 默认为0.5
set(gca,\’linewidth\’,2); %set(gca,,,)函数的作用是在做的图上插入坐标轴的坐标标注 省略x y
xlabel(\’x轴名称\’);
ylabel(\’y轴名称\’);
title(\’图片名称\’)
柱状图
figure
subplot(2,2,1); %subplot(m,n,p) m 代表行 n 代表列 p 代表的这个图形画在第几行、第几列。 subplot的使用方法: subplot(m,n,p)
hist(X(:,2));%将向量Y中的元素分到10个等间隔的范围内,并返回每个范围内元素的个数作为一行向量。 如果Y是一个m x p的矩阵,hist将Y的每一列作为一个向量,并返回一个10 x p的矩阵n。n的每一列的值对应Y的该列。第二列的全部元素 做直方图hist函数
title(\’dv1柱状分布图\’,\’fontsize\’,12)
subplot(2,2,2);
hist(X(:,3));
title(\’dv2柱状分布图\’,\’fontsize\’,12)
subplot(2,2,3);
hist(X(:,4));
title(\’dv3柱状分布图\’,\’fontsize\’,12)
subplot(2,2,4);
hist(X(:,5));
title(\’dv4柱状分布图\’,\’fontsize\’,12)