matlab 数据处理(数学建模)

  • 基本运算

clc;clear;close all;
%%  基本运算
a=2;
b=3;
c=a+b;
%%
d=4;
%%
c2=a+b;
c3=a*b;
c4=a/b;
c5=a^(2);
c6=b^(1/3);
%%
c7=exp(2);
c8=log2(8);
c9=log(8);
c10=log10(10);
%%
floor(2.2)  %向下取整
ceil(2.2)    %向上取整
c11=mod(b,a);   % b/a 的余数
%%
d=floor(2.2)  %向上取整
ceil(2.2)  %向下取整
%  1.3矩阵生成
%%
clc;clear;
%%
ju1=[1,2,3] %行矩阵
%%
ju2=[1 2 3]%矩阵
%%
%
ju3=[1;2;3] %列矩阵
%%
%%
%%
ju4=[1,3,1,1/3;1/3,1,1/2,1/5;1,2,1,1/3;3,5,5,1];
%%
rand(5)   %5*5  0-1 随机矩阵
rand(1,5)
rand(2,3)
%%
randperm(10,2)    %10范围 2随机整数 
%%
zeros(1,3)
ones(2,3)
eye(5)   
%%
ju5=randperm(10,5)  %在1-10范围内随机取5个整数
%
ju6=rand(10,5)  %在0-1范围内随机矩阵
%
ju7=zeros(3,6);  %全为0矩阵
ju8=ones(3,6);  %全为1矩阵
ju9=eye(3,6);  %全对角线为1

%%
a=1:10
%%
b=1:2:12
%%
linspace(3,4,5)
%%
matrix=[1,3,1,1/3;1/3,1,1/2,1/5;1,2,1,1/3]; 

[m,n]=size(matrix)  %%
%%
size(matrix,1)  %读行
%%
size(matrix,2)  %读列
%%
length(matrix)  %读最大   len

%%
A=ones(2,3)
B=4*ones(2,3)

%%
[A;B]
%%
[A,B]
%%
D=ones(3,2);
%%
C*D
%%
C.*B
%%
C./B
%%
B.^(2)
%%
B.^(1/2)

%%

%%
%%
ju10=1:10;
ju11=1:2:10;
ju12=linspace(1,10,5);% 1到10 之间均匀撒5个点
% 2.1矩阵操作
matrix=[1,3,1,1/3;1/3,1,1/2,1/5;1,2,1,1/3;3,5,5,1]; 
%
[m,~]=size(matrix);  %得到矩阵的 行数和列数
m1=size(matrix,1);  %得到矩阵的行数
n1=size(matrix,2);  %得到矩阵的列数
n2=length(matrix);
%
mum1=matrix(1,3)  %取出矩阵的第一行,第三列   
%
num2=matrix(1,:);   %取出矩阵的第一行
num3=matrix(:,1);   %取出矩阵的第一列
% 当然也支持矩阵多行多列选取
label=[1,3];
num4=matrix(label,:);
% 2.2矩阵运算
clc;clear;
ju1=4*ones(10,5);
%
ju2=8*ones(5,2);
ju3=ones(4,4);
ju4=6*ones(10,5);
ju5=2*ones(4,4);
%
ju3+ju5
ju3-ju5
%
num1=ju1*2;
%
num2=ju1.^(1/2);
%
num3=ju3*ju5;
%
num4=ju3.*ju5;
%
num5=ju3/ju5;   %ju3的逆矩阵与ju5相乘
%
num6=ju3./ju5;   %矩阵行列也是要相等的
%
[ju3,ju5] %水平方向合并 ,则行数要相同
%
[ju3;ju5] %竖直平方向合并 ,则列要相同
%
[ju3,ju5,ju3*ju5,ju3.*ju5,ju3/ju5,ju3./ju5]
% 2.3 统计函数
clc;clear;
ju1=[ 0.6472    0.2289    0.1946    0.7796    0.4582
    0.7360    0.3010    0.1496    0.1583    0.8554;
    0.8710    0.4099    0.8552    0.7292    0.1318;
    0.8671    0.1923    0.9307    0.1935    0.6139];

max(ju1)           %矩阵列最大值

max(ju1')           %矩阵行最大值

max(max(ju1))   %所有矩阵的最大值

[A,B]=max(ju1)   %最大值和所在位置

%%  数据导入

%%
data=xlsread('附件1 近5年402家供应商的相关数据.xlsx');
%%
data1=data(2:3,:);
%%
data1=data(2:10,:);
%%
index=[2,4,6,8];
data2=data(index,:);
%%
data1=data(:,2:3);
%%
data1=data(:,2:10);

%2:4  3:6
data1=data(2:4,3:6);
%%
%%
data3=table2array(data2);
%%
data_table=xlsread('附件1 近5年402家供应商的相关数据.xlsx','企业的订货量(m³)');
data_table2=readmatrix('附件1 近5年402家供应商的相关数据.xlsx','Sheet','企业的订货量(m³)');
%
data_table2(:,[1,2])=[]; %
% readtable
data_table3=readtable('附件1 近5年402家供应商的相关数据.xlsx','Sheet','企业的订货量(m³)');

data_table4=table2array(data_table3(:,3:end));

%%
%%  异常值识别
clc;clear;close all;
% load('data_test1.mat')
load('data_test.mat')
% 手动加上的异常数据
data(1,3)=10;
data(5,5)=100000;
data(8:15,7)=nan;
%%
%  缺失值识别
nanid=isnan(data);
%%
[A(:,1),A(:,2)]=find(nanid==1);
%%
data(:,7)=[];   %删除
%%
% 异常值识别
data_test=data(:,3);
%%
m_data=mean(data_test);
s_data=std(data_test);
%%
data1{1,1}=[1,2,3];
data1{1,2}=[1,2,3;3,4,5];
%%
%%
% x=[1,2,3,4,5]
% y=[2,4,5,6,100]
% index=[1,2,3,4];
% %%
% y=interp1(x(index),y(index),x,'spline')
%%
clc;clear;close all;
% load('data_test1.mat')
% load('data_test.mat')
load('data_zuoye.mat')
%%
% 手动加上的异常数据
% data(1,3)=10;
% data(5,5)=100000;
% data(8:15,7)=nan;
data=data_zuoye;
[m,n]=size(data);
for i=1:n
    data_get=data(:,i);
    data_index{1,i}=find(abs(data_get-mean(data_get))>3*std(data_get));
    plot(i,data_get,'bo')
    hold on
    if (length(data_index{1,i})>=1)
    plot(i,data_get(data_index{1,i}),'r*','LineWidth',1)  %如果有异常的话把异常显示出来
    hold on
    %异常进行插值补全
    label=1:m;    
    label1=label;    
    label1(data_index{1,i})=[];    
    yylabel=data_get;
    yylabel(data_index{1,i})=[];
     yylabel1= interp1(label1,yylabel,label,'spline');%三次样条插值数据
     data(:,i)=yylabel1;
    end
       %修正过后的data
end
xlabel('属性')
ylabel('数值')
set(gca,"FontSize",12,"LineWidth",1.5)
%%
%课后补充一个 数据处理,异常值识别的流程图
%补充 3sigma 法则    还有插值的原理 公式  4-5个 三次样条或者拉格朗日,cubic/选一种 写理论
%% 
%% 标准化
data1=zscore(data); 
%补充公式到论文
%%
data2=(mapminmax(data',0,1))';   %对行    %补充公式到论文
%%  降维
data_ld=tsne(data,'NumDimensions',2);  %TSNE降维
figure
plot(data_ld(:,1),data_ld(:,2),'*','LineWidth',1.5)
figure
data_ld1=pca(data,2);     %PCA降维
plot(data_ld1(:,1),data_ld1(:,2),'*','LineWidth',1.5)
%%  相关性分析
clc;clear;close all;
load('data_test.mat')
%%
load('color_cell1.mat')
[xiangguan,p_value]=corr(data,'Type','Pearson');%等效于xiangguan=corr(data,'Type','Pearson');
%x轴和y轴的标签,要和数据的列数对应
index_name={'Score','Economy','Family','Health','Freedom','Generosity'};
y_index = index_name;
x_index=index_name;
figure(1)
%字号12,字体宋体,可以随意改变 显示默认配色
H = heatmap(x_index,y_index, xiangguan, 'FontSize',12, 'FontName','宋体');
H.Title = '相关性分析系数检验矩阵'; 
colormap(color_cell1{1,1})
%%
plotmatrix(data(:,1:4))

你可能感兴趣的:(matlab,python,算法)