首页 > 其他分享 >Matlab

Matlab

时间:2023-08-08 13:56:01浏览次数:35  
标签:disp %% sum 元素 矩阵 Matlab size

函数查询网站:https://ww2.mathworks.cn/help/stateflow/matlab-functions.html

常用

%% MATLAB快速入门 % 对于学习MATLAB,大家切忌一股脑的扑在全套教程上,打算全学完MATLAB再来学习数学建模,其实大可不必。 % 我们只需要掌握基本的语法即可,在实际比赛和科研中,即查即用,养成查工具资料和帮助文档的习惯。 % 查询网站:https://ww2.mathworks.cn/help/stateflow/matlab-functions.html %% Matlab常用操作 % (1)赋值语句 a = 1; a = 2 % % (2)多行注释,选中语句,快捷键Ctrl+R % a = 1; % a = 2 % (3)取消注释:选中语句,快捷键Ctrl+T % 清除工作区的所有变量 clear % 清屏 clc % 这两条一起使用,起到“初始化”的作用 clear;clc % 分号也用于区分行。 %% 输出和输入函数(disp 和 input) % disp函数 disp('大家好,我是大师兄,欢迎一键三连') a = [1,2,3] %矩阵的同一行中间用逗号或空格分隔 a = [1 2 3] %空格分隔 disp(a) %% 判断语句 a = input('请输入考试分数:') if a >= 85 disp('成绩优秀') elseif a >= 60 disp('成绩合格') else disp('成绩挂科') end %% 字符串 % 合并几个字符串 % (1)方法一:strcat(str1,str2……,strn) strcat('字符串1','字符串2') % (2)方法二:[str 1,str 2,……, str n]或[str1 str2 …… strn] ['字符串1' '字符串2'] ['字符串1','字符串2'] % 转换字符串 c = 100 num2str(c) disp(['c的取值为' num2str(c)]) disp(strcat('c的取值为', num2str(c))) %% sum求和函数 % (1)如果是向量(无论是行向量还是列向量),都是直接求和 E = [1,2,3] sum(E) E = [1;2;3] sum(E) % (2)如果是矩阵,则需要指明是按行还是按列求和 clc E = [1,2;3,4;5,6] a = sum(E) a = sum(E,1)%按列求和(得到一个行向量) a = sum(E,2)%按行求和(得到一个列向量) %对整个矩阵求和 a = sum(sum(E)) a = sum(E(:)) %% 矩阵的查询 % (1)取指定行和列的一个元素(输出的是一个值) A=[1 2 5; 1/2 1 2; 1/5 1/2 1]; A A(2,1) A(3,2) % (2)取指定的某一行的全部元素(返回的是一个行向量) A(1,:) A(2,:) % (3)取指定的某一列的全部元素(返回的是一个列向量) A(:,1) A(:,3) % (4)取指定的某些行的全部元素(返回的是一个矩阵) A([1,3],:) % 只取第一行和第三行 A(1:3,:) % 取第一行到第三行 A(1:2:3,:) % 取第一行和第三行 (从一开始,每次递增2个行,到3结束) % 递增语法 1:3:10 10:-1:1 A(1:end,:) % 取第一行到最后一行 A(1:end-1,:) % 取第一行到倒数第二行 % (5)取全部元素(按列拼接的,最终输出的是一个列向量) A(:) %% size函数 clc; A = [1,2,3;4,5,6] B = [1,2,3,4,5,6] size(A) size(B) % size(A)函数是用来求矩阵A的大小的,它返回一个行向量,第一个元素是矩阵的行数,第二个元素是矩阵的列数 [r,c] = size(A) % 指定返回行数或列数 r = size(A,1) %返回行数 c = size(A,2) %返回列数 %% repmat函数 % B = repmat(A,m,n):将矩阵A复制m×n块,即把A作为B的元素,B由m×n个A平铺而成。 % 就是先创建一个m×n的矩阵,然后把A作为元素填充进去 A = [1,2,3;4,5,6] B = repmat(A,2,1) B = repmat(A,3,2) %% 矩阵的运算 % MATLAB在矩阵的运算中,“*”号和“/”号代表矩阵之间的乘法与除法(A/B = A*inv(B)) A = [1,2;3,4] B = [1,0;1,1] A * B inv(B) % 求B的逆矩阵 B * inv(B) A * inv(B) A / B % 两个形状相同的矩阵对应元素之间的乘除法需要使用“.*”和“./” A = [1,2;3,4] B = [1,0;1,1] A .* B A ./ B % 每个元素同时乘或除相同的倍数 A = [1,2;3,4] A * 2 A .* 2 A / 2 A ./ 2 % 每个元素同时乘方时只能用 .^ A = [1,2;3,4] A .^ 2 %将各个元素平方 A ^ 2 A * A %% 求特征值和特征向量 A = [1 2 3 ;2 2 1;2 0 3] % 求矩阵A的全部特征值,返回一个由特征值构成的向量 E=eig(A) % 求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。(V的每一列都是D中与之相同列的特征值的特征向量) [V,D]=eig(A)

层次分析

%% 层次分析法 % 只有非一致矩阵才需要一致性检验 % % 要先进行一致性检验,通过后才能求权重,我们这里为了方便讲解才放到了最后做的一致性检验 %% 获取判断矩阵 disp('请输入判断矩阵A') A=input('A='); [n,n] = size(A); %% 方法1: 算术平均法求权重 Sum_A = sum(A); %将A矩阵按列求和 SUM_A = repmat(Sum_A,n,1); Stand_A = A ./ SUM_A; disp('算术平均法求权重的结果为:'); w1 = sum(Stand_A,2)./n; disp(w1) %% 方法2: 特征值法求权重 [V,D] = eig(A); Max_eig = max(max(D));% 先按列求最大值,得到行向量,再从这个向量里面求最大值 [r,c]=find(D == Max_eig , 1); disp('特征值法求权重的结果为:'); w2 = V(:,c) ./ sum(V(:,c)); disp(w2) disp('两种方法的平均权值为:'); disp((w1 + w2) ./ 2); %% 计算一致性比例CR CI = (Max_eig - n) / (n-1); RI=[0 0.0001 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59]; %这里的RI最多支持 n = 15,注意检查! % 这里n=2时,RI=0,我们为了避免分母为0,将这里的第二个元素改为了很接近0的正数 CR=CI/RI(n); disp('最大特征值为:'); disp(Max_eig); disp('一致性指标CI=');disp(CI); disp('一致性比例CR=');disp(CR); if CR<0.10 disp('CR<0.10,该判断矩阵A的一致性可以接受!'); else disp('注意:CR >= 0.10,该判断矩阵需要进行修改!'); end %% 注意事项 % 大家看完代码后一定要自己上手复现一遍,版式整洁,写好注释,这样比赛时就可以直接复制到论文里了,国赛对于论文的查重要求非常严格,代码雷同也算作抄袭  

标签:disp,%%,sum,元素,矩阵,Matlab,size
From: https://www.cnblogs.com/yuooo/p/17613981.html

相关文章