《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的文件个数:

  1. D1=dir(fullfile(filedir,\'*.3gp\'));

  2. filename={D1.name}\'; %name要进行转置

  3. 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)