matlab数学建模方法与实践 笔记2:数据的准备_matlab数学建模方法与实践程序-程序员宅基地

技术标签: matlab  算法  数学建模  笔记  机器学习  人工智能  数据挖掘  科研笔记与实践  

1.数据的读取与写入

excel、txt

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)

2.数据预处理

P27

缺失值

删除、插补(均值、回归、极大似然估计(期望值最大化))

噪声过滤

回归、平滑、离群点分析、小波过滤

数据集成

建模比赛没有

数据归约

属性选择、样本选择
相关性分析、主成分分析

数据变换

P33
标准化、离散化、语义转换

3.数据统计

4.数据可视化

P431.m

原始分布形态,了解大致分布中心、边界、数据集中度
在这里插入图片描述
柱状分布图
在这里插入图片描述
请添加图片描述

% 数据可视化——基本绘图
% 《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))

5.数据降维

PCA

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数学建模方法与实践 笔记2:数据的准备

在数学建模中,数据的准备是一个至关重要的阶段。数据的质量和准确性对于建模的成功至关重要。在MATLAB中,有一些强大的工具和技术可以帮助你准备和处理数据。本笔记将重点介绍如何使用MATLAB来准备数据,以便进行数学建模。

1. 数据的导入

在进行数学建模之前,首先需要将数据导入MATLAB。MATLAB支持多种数据格式的导入,包括文本文件、Excel文件、CSV文件等。你可以使用readtablexlsread等函数来导入数据。

% 从文本文件导入数据
data = readtable('data.txt');

% 从Excel文件导入数据
data = xlsread('data.xlsx');

2. 数据的清洗

导入数据后,通常需要进行数据清洗,以去除缺失值、异常值和不必要的数据列。MATLAB提供了各种函数和工具,如rmmissingisoutlierremovevars,用于数据清洗。

% 去除缺失值
data = rmmissing(data);

% 去除异常值
outliers = isoutlier(data.Var1);
data = data(~outliers, :);

% 去除不必要的数据列
data = removevars(data, {
    'Var2', 'Var3'});

3. 数据的转换

有时,需要对数据进行转换,以便更好地适应建模需求。这可能包括对数据进行平滑、归一化、对数变换等。

% 对数据进行对数变换
data.Var1 = log(data.Var1);

% 对数据进行归一化
data.Var1 = (data.Var1 - min(data.Var1)) / (max(data.Var1) - min(data.Var1));

4. 数据的合并

如果你有多个数据源,可能需要将它们合并成一个数据集,以便进行建模分析。MATLAB提供了joinouterjoin等函数来执行数据集合并操作。

% 合并两个数据集
merged_data = join(data1, data2, 'Keys', 'ID');

5. 数据的可视化

数据可视化是数据准备的重要一部分,可以帮助你理解数据的分布和特征。MATLAB提供了各种绘图函数,如histogramscatterboxplot,用于数据可视化。

% 绘制直方图
histogram(data.Var1);

% 绘制散点图
scatter(data.Var1, data.Var2);

% 绘制箱线图
boxplot(data.Var1);

6. 数据的保存

在准备数据之后,通常需要将处理后的数据保存到文件中,以便后续建模使用。MATLAB支持将数据保存为文本文件、Excel文件等。

% 将数据保存为文本文件
writetable(data, 'cleaned_data.txt');

% 将数据保存为Excel文件
writetable(data, 'cleaned_data.xlsx');

数据准备是数学建模过程中不可或缺的一部分。MATLAB提供了丰富的工具和函数,帮助你导入、清洗、转换、合并、可视化和保存数据。通过正确的数据准备,你可以提高建模的准确性和效率。在建模之前,务必投入足够的时间来准备和理解你的数据,这将为你的数学建模工作奠定坚实的基础。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wtyuong/article/details/126836907

智能推荐

Table 'mysql.user' doesn't exist-程序员宅基地

文章浏览阅读9k次。遇到这个错误一般是mysql的数据文件路径配置错了导致basedir = /usr/local/mysqldatadir = /usr/local/mysql/data/mysql在/etc/my.cnf,还有一个安装mysql的位置有一个my.cnf,如果全局的/etc/my.cnf,则看当前安装目录下的my.cnf文件..._table 'mysql.user' doesn't exist

Fast ORB-SLAM-程序员宅基地

文章浏览阅读1.5k次。点云PCL免费知识星球,点云论文速读。文章:FastORB-SLAM: Fast ORB-SLAM method with Coarse-to-Fine Descriptor Indep..._fast orb slam

Ubuntu系统入门指南:基础操作和使用-程序员宅基地

文章浏览阅读2.1k次,点赞32次,收藏49次。本文的目的是为读者提供一个全面的Ubuntu系统入门指南,帮助他们了解Ubuntu系统的基础操作和使用方法。Ubuntu系统作为一种免费、开源、安全、稳定且易于使用的操作系统,越来越受到用户的青睐。然而,对于新手来说,掌握Ubuntu系统的操作和使用可能会有一定的困难。因此,本文的重要性在于向读者介绍Ubuntu系统的基本知识和技巧,帮助他们顺利开始使用Ubuntu系统,并最大限度地发挥其功能和优势。通过本文的阅读,读者将能够掌握Ubuntu系统的安装、基础操作、日常使用和高级功能,并能够解决常见问题。_ubuntu

MSSQL-最佳实践-行级别安全解决方案-程序员宅基地

文章浏览阅读158次。title: MSSQL-最佳实践-行级别安全解决方案author: 风移摘要在SQL Server安全系列专题月报分享中,我们已经分享了:如何使用对称密钥实现SQL Server列加密技术、使用非对称密钥加密方式实现SQL Server列加密、使用混合密钥实现SQL Server列加密技术和列加密技术带来的查询性能问题以及相应解决方案四篇文章。..._mssql security

Ardunio开发实例-敲击传感器_敲击传感器模块arduino-程序员宅基地

文章浏览阅读1k次。敲击传感器振动是自然界最普遍的现象之一,大至宇宙小至原子粒子,无不存在振动现象。在工程技术领域中振动现象比比皆是,但在很多情况下振动是有害的,例如:振动降低加工精度和光洁度,加剧结构件的疲劳和磨损,在车辆和航空领域中机体及结构件的振动不但会影响驾驶员的操作和舒适度,严重情况下还会引起机体、结构件的断裂甚至解体。敲击传感器是用于检测冲击力或者加速度的传感器 ,通常使用的是加上应力就会产生电荷的压电器件,也有采用别的材料和方法可以进行检测的传感器。本次实例使用的敲击传感器相对简单,如下图所示:1、硬件_敲击传感器模块arduino

机器学习——决策树(Decision Trees)_机器学习-决策树-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏11次。机器学习学习笔记——3_机器学习-决策树

随便推点

C语言:练习题三_charb,c;inti b='a,c=a-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏7次。认真练习,每一道c语言题目。_charb,c;inti b='a,c=a

搭建微信小程序转码机器人教程_转码机器人制作-程序员宅基地

文章浏览阅读6.5k次,点赞6次,收藏19次。免费微信转码机器人话不多说先上效果图需要准备的工具:服务器一台+微信公众号或小程序+可爱猫+2个微信(用于测试),相关工具已经全部打包自行下载(关注微信公众号:隔壁阿深)。下载安装工具打开可爱猫,这里有一点需要注意,微信版本必须要和可爱猫版本相符才能登陆。不过不用担心打开可爱猫时会自动检查你微信版本,如果不符会自动弹出下载窗口,下载安装对应版本即可。然后添加插件打开转码插件,登陆微信公众号,做相关配置即可。如果不想弄服务器,可以直接使用博主的机器人哦,全天24小时免费使用。微信添加机器人:GeB_转码机器人制作

QT:理想单薄透镜的参数计算_qt画单透镜-程序员宅基地

文章浏览阅读1.2k次,点赞6次,收藏24次。给定理想单薄透镜的像距和物距,计算出该透镜的像距、轴向放大率、横向放大率和角放大率直接上代码.pro#-------------------------------------------------## Project created by QtCreator 2021-12-10T13:24:32##-------------------------------------------------QT += core guigreaterThan(QT_MAJO_qt画单透镜

Visual Studio Code的安装教程(后期的如何安装插件、配置C语言的环境等看我之后的文章)_visual studio 怎么安装插件-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏3次。我们来看Visual Studio Code如何下载和安装吧!Visual Studio Code是微软做的,但是它和Visual Studio没有半毛钱关系。Visual Studio Code是一个独立的编辑器,当然它有很好的功能,我们可以把它配置好来做编程的各种各样的事情。_visual studio 怎么安装插件

【HarmonyOS】HarmonyOS参考资料_harmonyos应用开发者高级认证考试入口-程序员宅基地

文章浏览阅读429次,点赞9次,收藏8次。【资料】【HarmonyOS】HarmonyOS参考资料_harmonyos应用开发者高级认证考试入口

unturned服务器怎么自定义,《Unturned》机房服务器开服方法图文教程-程序员宅基地

文章浏览阅读1.1k次。《Unturned》机房服务器开服方法图文教程2014-08-05 09:39:57来源:贴吧编辑:评论(0)《Unturned》游戏中有些玩家想自己开服,之前给大家介绍了各种开服方法,今天给大家带来更直观的开服方法,一起来看看吧。多种开服方法:点击进入1.在服务器下载安装steam.(登录时建立个新的号来登录)2.用steam下载unturned.3.先运行一次,出现“oops”等崩溃错误 点掉..._unturned3.0怎么开服