P23-25
cha3
ReadImages
%% 读取图片
% 《MATLAB数学建模方法与实践》(《MATLAB在数学建模中的应用》升级版),北航出版社,卓金武、王鸿钧编著.
clc, clear, close all
a1=imread('000.bmp');
[m,n]=size(a1);
%% 批量读取图片
dirname = 'ImageChips';
files = dir(fullfile(dirname, '*.bmp'));
a=zeros(m,n,19);
pic=[];
for ii = 1:length(files)
filename = fullfile(dirname, files(ii).name);
a(:,:,ii)=imread(filename);
pic=[pic,a(:,:,ii)];
end
double(pic);
figure
imshow(pic,[])
此外参考https://blog.csdn.net/WTYuong/article/details/122626337
图像识别系列
选取某帧数图像进行图像层面的分析
cha3
readVideo
%% 读取视频数据
% 《MATLAB数学建模方法与实践》(《MATLAB在数学建模中的应用》升级版),北航出版社,卓金武、王鸿钧编著.
videoFReader = vision.VideoFileReader('vippedtracking.mp4');
% 播放视频文件
videoPlayer = vision.VideoPlayer;
while ~isDone(videoFReader)
videoFrame = step(videoFReader);
step(videoPlayer, videoFrame);
end
release(videoPlayer);
%% 设置播放方式
% 重置播放器
reset(videoFReader)
% 增加播放器的尺寸
r = groot;
scrPos = r.ScreenSize;
% Size/position is always a 4-element vector: [x0 y0 dx dy]
dx = scrPos(3); dy = scrPos(4);
videoPlayer = vision.VideoPlayer('Position',[dx/8, dy/8, dx*(3/4), dy*(3/4)]);
while ~isDone(videoFReader)
videoFrame = step(videoFReader);
step(videoPlayer, videoFrame);
end
release(videoPlayer);
reset(videoFReader)
%% 获取视频中的图像
videoFrame = step(videoFReader);
n = 0;
while n~=15
videoFrame = step(videoFReader);
n = n+1;
end
figure, imshow(videoFrame)
release(videoPlayer);
release(videoFReader)
P27
删除、插补(均值、回归、极大似然估计(期望值最大化))
回归、平滑、离群点分析、小波过滤
建模比赛没有
属性选择、样本选择
相关性分析、主成分分析
P33
标准化、离散化、语义转换
原始分布形态,了解大致分布中心、边界、数据集中度
柱状分布图
% 数据可视化——基本绘图
% 《MATLAB数学建模方法与实践》(《MATLAB在数学建模中的应用》升级版),北航出版社,卓金武、王鸿钧编著.
% 读取数据
clc, clear al, close all
X=xlsread('dataTableA2.xlsx');
% 绘制变量dv1的基本分布
N=size(X,1);
id=1:N;
figure
plot( id', X(:,2),'LineWidth',1)
set(gca,'linewidth',2);
xlabel('编号','fontsize',12);
ylabel('dv1', 'fontsize',12);
title('变量dv1分布图','fontsize',12);
% 同时绘制变量dv1-dv4的柱状分布图
figure
subplot(2,2,1);
hist(X(:,2));
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)
P432.m
% 数据可视化——数据分布形状图
% 《MATLAB数学建模方法与实践》(《MATLAB在数学建模中的应用》升级版),北航出版社,卓金武、王鸿钧编著.
% 读取数据
clc, clear al, close all
X=xlsread('dataTableA2.xlsx');
dv1=X(:,2);
% 绘制变量dv1的柱状分布图
h = -5:0.5:5;
n = hist(dv1,h);
figure
bar(h, n)
% 计算常用的形状度量指标
mn = mean(dv1); % 均值
sdev = std(dv1); % 标准差
mdsprd = iqr(dv1); % 四分位数
mnad = mad(dv1); % 中位数
rng = range(dv1); % 极差
% 标识度量数值
x = round(quantile(dv1,[0.25,0.5,0.75]));
y = (n(h==x(1)) + n(h==x(3)))/2;
line(x,[y,y,y],'marker','x','color','r')
x = round(mn + sdev*[-1,0,1]);
y = (n(h==x(1)) + n(h==x(3)))/2;
line(x,[y,y,y],'marker','o','color',[0 0.5 0])
x = round(mn + mnad*[-1,0,1]);
y = (n(h==x(1)) + n(h==x(3)))/2;
line(x,[y,y,y],'marker','*','color',[0.75 0 0.75])
x = round([min(dv1),max(dv1)]);
line(x,[1,1],'marker','.','color',[0 0.75 0.75])
legend('Data','Midspread','Std Dev','Mean Abs Dev','Range')
P433.m
% 数据可视化——变量想相关性
% 《MATLAB数学建模方法与实践》(《MATLAB在数学建模中的应用》升级版),北航出版社,卓金武、王鸿钧编著.
% 读取数据
clc, clear al, close all
X=xlsread('dataTableA2.xlsx');
Vars = X(:,7:12);
% 绘制变量间相关性关联图
figure
plotmatrix(Vars)
% 绘制变量间相关性强度图
covmat = corrcoef(Vars);
figure
imagesc(covmat);
grid;
colorbar;
% 数据可视化——数据分组
% 《MATLAB数学建模方法与实践》(《MATLAB在数学建模中的应用》升级版),北航出版社,卓金武、王鸿钧编著.
% 读取数据
clc, clear al, close all
X=xlsread('dataTableA2.xlsx');
dv1=X(:,2);
eva=X(:,12);
% Boxplot
figure
boxplot(X(:,2:12))
figure
boxplot(dv1, eva)
figure
boxplot(X(:,5))
P41 原理、步骤
p43 案例
%% PCA数据降维实例
% 《MATLAB数学建模方法与实践》(《MATLAB在数学建模中的应用》升级版),北航出版社,卓金武、王鸿钧编著.
%% 读取数据
A=xlsread('Coporation_evaluation.xlsx', 'B2:I16');
% Transfer orginal data to standard data
a=size(A,1); % Get the row number of A
b=size(A,2); % Get the column number of A
for i=1:b
SA(:,i)=(A(:,i)-mean(A(:,i)))/std(A(:,i)); % Matrix normalization
end
% Calculate correlation matrix of A.
CM=corrcoef(SA);
% Calculate eigenvectors and eigenvalues of correlation matrix.
[V, D]=eig(CM);
% Get the eigenvalue sequence according to descending and the corrosponding
% attribution rates and accumulation rates.
for j=1:b
DS(j,1)=D(b+1-j, b+1-j);
end
for i=1:b
DS(i,2)=DS(i,1)/sum(DS(:,1));
DS(i,3)=sum(DS(1:i,1))/sum(DS(:,1));
end
% Calculate the numvber of principal components.
T=0.9; % set the threshold value for evaluating information preservation level.
for K=1:b
if DS(K,3)>=T
Com_num=K;
break;
end
end
% Get the eigenvectors of the Com_num principal components
for j=1:Com_num
PV(:,j)=V(:,b+1-j);
end
% Calculate the new socres of the orginal items
new_score=SA*PV;
for i=1:a
total_score(i,2)=sum(new_score(i,:));
total_score(i,1)=i;
end
new_score_s=sortrows(total_score,-2);
%% 显示结果
disp('特征值及贡献率:')
DS
disp('阀值T对应的主成分数与特征向量:')
Com_num
PV
disp('主成分分数:')
new_score
disp('主成分分数排序:')
new_score_s
在数学建模中,数据的准备是一个至关重要的阶段。数据的质量和准确性对于建模的成功至关重要。在MATLAB中,有一些强大的工具和技术可以帮助你准备和处理数据。本笔记将重点介绍如何使用MATLAB来准备数据,以便进行数学建模。
在进行数学建模之前,首先需要将数据导入MATLAB。MATLAB支持多种数据格式的导入,包括文本文件、Excel文件、CSV文件等。你可以使用readtable
、xlsread
等函数来导入数据。
% 从文本文件导入数据
data = readtable('data.txt');
% 从Excel文件导入数据
data = xlsread('data.xlsx');
导入数据后,通常需要进行数据清洗,以去除缺失值、异常值和不必要的数据列。MATLAB提供了各种函数和工具,如rmmissing
、isoutlier
和removevars
,用于数据清洗。
% 去除缺失值
data = rmmissing(data);
% 去除异常值
outliers = isoutlier(data.Var1);
data = data(~outliers, :);
% 去除不必要的数据列
data = removevars(data, {'Var2', 'Var3'});
有时,需要对数据进行转换,以便更好地适应建模需求。这可能包括对数据进行平滑、归一化、对数变换等。
% 对数据进行对数变换
data.Var1 = log(data.Var1);
% 对数据进行归一化
data.Var1 = (data.Var1 - min(data.Var1)) / (max(data.Var1) - min(data.Var1));
如果你有多个数据源,可能需要将它们合并成一个数据集,以便进行建模分析。MATLAB提供了join
和outerjoin
等函数来执行数据集合并操作。
% 合并两个数据集
merged_data = join(data1, data2, 'Keys', 'ID');
数据可视化是数据准备的重要一部分,可以帮助你理解数据的分布和特征。MATLAB提供了各种绘图函数,如histogram
、scatter
和boxplot
,用于数据可视化。
% 绘制直方图
histogram(data.Var1);
% 绘制散点图
scatter(data.Var1, data.Var2);
% 绘制箱线图
boxplot(data.Var1);
在准备数据之后,通常需要将处理后的数据保存到文件中,以便后续建模使用。MATLAB支持将数据保存为文本文件、Excel文件等。
% 将数据保存为文本文件
writetable(data, 'cleaned_data.txt');
% 将数据保存为Excel文件
writetable(data, 'cleaned_data.xlsx');
数据准备是数学建模过程中不可或缺的一部分。MATLAB提供了丰富的工具和函数,帮助你导入、清洗、转换、合并、可视化和保存数据。通过正确的数据准备,你可以提高建模的准确性和效率。在建模之前,务必投入足够的时间来准备和理解你的数据,这将为你的数学建模工作奠定坚实的基础。