【数学建模竞赛】Matlab入门讲解

简介: 【数学建模竞赛】Matlab入门讲解

数值运算和矩阵运算

数值运算

%% 算数运算
sqrt
power(8,1/3)
log(1,5) %e
log10(1,5) %10
exp(2) %e为底的指数
expm1(2) %=exp(x)-1
nextpow2(20) %寻找最大的n,使得2*(n-1)小于该值 ans=5
disp(x)%输出相当于printf
sin(pi)%写成sinpi(1)
asin(1/2) %反正弦 弧度制
asind(1/2) %反正弦 角度制
atan2(1,-1) %四象限反正切
mod(17,4) %求余数
sign(-1) %符号函数 负数保持不变 正数为一 0为0
fix (1.1072)%向0取整
floor (1.1072) %向负无穷取整
ceil(1.1072) %向正无穷取整
round(1.1072) %直接四舍五入
roundn(1.1072,-2) %-2是小数点后两位
max ([])
min ([])
mean ([]) %平均值
median ([]) %中位数
prod ([]) %求积
sum ([])
var ([]) %方差
std ([]) %标准差
cov ([]) %协防差
%生成随机数
rand(1) %生成0-1的随机数
rand(1)*100+20 %生成20-120的随机数
randi(100) %生成0-100的随机整数

矩阵运算

%%矩阵运算
1 : 1 : 100  % 1间隔2到100
[3,4]
[1 2 3] %矩阵相当于行矩阵
[1,2,3] %行矩阵
[1;2;3] %列矩阵
[1,2,3;4,5,6;7,8,9] %有行有列
zeros(10) %创建10x10全是0的矩阵
zeros(10,20) %创建10x20全是0的矩阵
eye(10)%创建10x10的单位 全对角线为1
magic(10)%创建10x10的幻方
rand(10)%创建10x10的均匀分布随机矩阵(0~1的范围)
3*rand(10)%创建10x10的均匀分布随机矩阵(0~3的范围)
randn(10)%创建10x10的正态分布随机矩阵(0~1的范围)
randperm(10,5) %在1-10范围内随机取5个整数
[xx,yy]=meshgrid(1:100,1:5);%基矩阵
repmat(rand(10),1,5)%扩充矩阵
[m, n]=size(matrix); %得到矩阵的行数和列数
m1 = size(matrix,1); %得到矩阵的行数
n1 = size(matrix,2); %得到矩阵的列数
n2 = length(matrix); %得到矩阵的行数和列数的较大数
num1 = matrix(1,3) %取出矩阵得第一行,第三列
num2 = matrix(1,:) %取出矩阵得第一行
num3 = matrix(:,1) %取出矩阵得第一列
%多行多列选取
label=[1,3];
num4 = matrix(:,label) %取出矩阵得第一列和第三列
A*B 
A/B %A乘B的逆
A\B %A的逆乘B
A.*B %数乘
A./B %右数除
A.\B %左数除
inv %求逆
pinv %求伪逆(适用于非方阵)
A' %转置
det(A)
trace(A)
lu(A)
qr(A)
eig(A) %求特征值

数据的导入

%% readexcel
data_table = xlsread("食品零售价格.xls");
%% 读不了文本数据
data_table2 = readmatrix("食品零售价格.xls");
%% 基本上数据保留比较全/table的形式
data_table3 = readtable("食品零售价格.xls");
%% 元胞的形式
data_table4 = readcell("食品零售价格.xls");
%% load导入命令
load("食品零售价格.xls");

矩阵的逻辑处理

%% 不管是什么数据,都要转化为矩阵形式
data = data_table3(:,3:end); %所有行/第三列到最后一列%仍然是table的形式
data1 = table2array(data); %table-> double(矩阵)
%% 求最大值 最小值 平均值
data_max = max(data1); %注意这里求的是每一列得最大值 %求行的时候要进行转置(data')
%% 求不为0的次数位置
% ~(不等于) = == > < = >= <= 
data_shang1 = data1(1,:);%第一行的数据
index1 = find(data_shang1~=0);%找到不为0的位置
num_index1 = length(index1); %找到不为0的次数
data_shang1(index1);
%% 循环
data_shangall = zeros(1,size(data1,1));
for i = 1:size(data1,1)
    data_shang1 = data1(i,:);
    index1 = find(data_shang1 ~=0);
    num_index1 = length(index1); 
    data_mean = mean(data_shang1(index1));%求平均值
    data_shangall(i) = num_index1;
end
%% 找到矩阵的缺失值并删除所在行或列
index = isnan(data_nan); % 最后生成logical变量 (NaN变成1,正常的变成0)
data_nan1 = data_nan;
data_nan1(index1,:) = []; %赋值为空
 
%% 分布找出类属于A,B,C 的数据,存储起来
%% 将文字标签改为数字标签
data_abc = data_table1(:,2);%将第二列取出来 data_table1(2,:);%第二行
data_abc_num = table2array(data_abc);%表文件转化为cell
%%
data_tongji = tabulate(data_abc_num);% 统计ABC个数
for i = 1:size(data_tongji,1)
    dianli_str{1,i} = data_tongji{i,1};
end
%%
data_shuju = zeros(length(data_abc_num),1);
for NN = 1:length(dianli_str)
idx = find(ismember(data_abc_num,dianli_str{1,NN}));%寻找文字变量的位置
data_shuju(idx)=NN;
end
%讲ABC找出来
for i = 1:size(data_tongji,1)%讲不同标签行的位置分别找出来存在不同的元胞里,因为
    A(i)={find(data_shuju == i)};
end
%% 对cell里的数据进行同样的处理
% 标准化 zescore
std_data = zscore(data1);%对矩阵每列进行标准化
%%
std_data1 = mapminmax(data1',0,1)'; %mapminmax对每行进行标准化,操作的时候
%% 如果对B类数据进行标准化
B_data = data1(A{1,1},:);
std_B_data = zscore(B_data);
A{2,1} = std_B_data;
%批量操作
for i = 1:length(A)
    B_data = data1(A{1,i},:);
    std_B_data = zscore(B_data);
    C{1,i} = std_B_data;
end
%%
for i = 1:size(data1,1)
    data_te = data(i,:);
    data_mean = mean(data_te);
    data_std = std(data_te);
    index = find((data_te>(data_mean+3*data_std))|(data_te<(data_mean-3*data_std)));
    AA{i} = index;
end
%% 
data1([1,4,5],:) = [];
相关文章
|
2月前
|
机器学习/深度学习 算法 数据可视化
【一共21份资源】【入门学习】【打包带走】时序+回归+预测入门学习(Matlab代码实现)
【一共21份资源】【入门学习】【打包带走】时序+回归+预测入门学习(Matlab代码实现)
|
2月前
|
机器学习/深度学习 存储 算法
【水下机器人建模】基于QLearning自适应强化学习PID控制器在AUV中的应用研究(Matlab代码实现)
【水下机器人建模】基于QLearning自适应强化学习PID控制器在AUV中的应用研究(Matlab代码实现)
263 0
|
2月前
|
机器学习/深度学习 Python
【EI复现】基于断线解环思想的配电网辐射状拓扑约束建模方法(Matlab代码实现)
【EI复现】基于断线解环思想的配电网辐射状拓扑约束建模方法(Matlab代码实现)
100 1
|
2月前
|
机器学习/深度学习 数据采集 传感器
考虑时空相关性的风电功率预测误差建模与分析(Matlab代码实现)
考虑时空相关性的风电功率预测误差建模与分析(Matlab代码实现)
|
3月前
|
数据采集 算法 自动驾驶
【RIS通信】分布式多重构智能表面RIS辅助无线系统的统计表征和建模研究(Matlab代码实现)
【RIS通信】分布式多重构智能表面RIS辅助无线系统的统计表征和建模研究(Matlab代码实现)
|
3月前
|
网络协议 Python
水声网络(UAN)仿真的信道建模(Matlab代码实现)
水声网络(UAN)仿真的信道建模(Matlab代码实现)
138 0
|
4月前
|
机器学习/深度学习 算法
matlab实现电力线噪声分类、建模及仿真
matlab实现电力线噪声分类、建模及仿真
|
8月前
|
存储 算法 数据安全/隐私保护
基于风险的完整性和检查建模(RBIIM)MATLAB仿真
本程序为基于风险的完整性和检查建模(RBIIM)的MATLAB仿真,适用于评估和优化资产完整性管理计划,特别针对石油化工等领域的管道、储罐等设备。程序在MATLAB 2022A版本下运行,对比了先验密度(Prior Density)、后验完美检测(Posterior Perfect Inspection)、后验不完美检测(Posterior Imperfect Inspection)及累积后验不完美检测四个关键指标。算法采用贝叶斯统计框架,通过更新资产健康状况估计,制定最佳维护与检查策略。示例展示了核心原理与运行效果,完整程序无水印。
|
1月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
183 0
|
1月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)

热门文章

最新文章