【数学建模竞赛】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],:) = [];
相关文章
|
8天前
|
算法
基于HASM模型的高精度建模matlab仿真
本课题使用HASM进行高精度建模,介绍HASM模型及其简化实现方法。HASM模型基于层次化与自适应统计思想,通过多层结构捕捉不同尺度特征,自适应调整参数,适用于大规模、高维度数据的分析与预测。MATLAB2022A版本运行测试,展示运行结果。
|
3月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
128 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
3月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
90 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
4月前
|
监控
基于偏微分方程离散化计算的地下换热器建模与温度检测matlab仿真
**摘要:** 探索地下换热器的建模与温度检测,使用MATLAB2022a进行系统仿真,关注传热过程的热传导、对流和辐射。通过离散化偏微分方程建立数值模型,模拟温度场,考虑地质特性和水流影响。建模以网格单元描述温度变化,采用热电偶、红外和光纤测温技术验证模型并监控温度,各具优缺点。光纤测温法提供高精度和抗干扰的分布式监测。
|
4月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于负相关误差函数的4集成BP神经网络matlab建模与仿真
**算法预览:** 图像显示无水印的2022a版MATLAB运行结果 **软件版本:** MATLAB 2022a **核心代码片段:** 省略展示 **理论概述:** NCL集成BP网络利用负相关提升泛化,结合多个弱模型减少错误关联。通过λ参数控制模型间负相关程度,λ&gt;0增强集成效果,提高预测准确性和系统稳健性。
|
3月前
|
算法
基于matlab的风力发电系统建模与详细性能仿真分析
本研究介绍风力发电原理与系统模型,使用MATLAB 2022a进行性能仿真。风力通过风轮转化为电能,涉及贝努利定理及叶素理论。仿真展示了风速与输出功率间的关系,包括风电利用系数、切入切出控制与MPPT控制效果。当风速超过25m/s时,系统自动停机保护设备。MPPT算法确保了在变化风速下获得最大功率。
|
5月前
|
算法 数据可视化 数据挖掘
MATLAB中常用的数学函数及其应用示例
MATLAB中常用的数学函数及其应用示例
|
3月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
198 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
6月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)