MATLAB学习笔记

    技术2025-08-01  10

    MATLAB学习笔记

    基础知识向量及矩阵[重点]常见函数 特殊函数数学规划类程序涉及结构 设置函数使用m文件设置函数

    参考笔记来源:清风数学建模

    基础知识

    m文件,即matlab程序的脚本,程序代码写在脚本文件里面。可以用记事本打开进行编辑和打开。命令行窗口用来执行命令,编辑器用来编辑代码,也可以使用编辑器直接运行代码,但是是一次性运行全部的代码。推荐两者配合,编辑器复制粘贴到命令行运行加上分号表示不显示,不加默认显示结果。注释使用 % ,使用编辑器中“注释”可以多行注释(ctrl + r)/ 取消注释(ctrl+t)。 所有的代码必须是英文字符。clear命令清除工作区变量,clc清除命令行窗口文本,两者不相互影响,可以连起来一起使用。clear;clc 这条命令可以作初始化的作用。

    向量及矩阵[重点]

    向量表示 1. a = [1 2 3] % 不加或者使用逗号表示行向量分割 2. a = [1;2;3] % 分号表示分割列向量 矩阵表示 = 向量表示 + 分号, 在matlab中矩阵是按照连续的列向量存储的,也就是说一个 3 × 4 3 \times 4 3×4 的矩阵第(2,1)个元素其实是按照列向量排序的第 5个元素矩阵拼接 3. new = [a, b] / [a;b] % 将同行或同列的矩阵拼接成新的矩阵 4. new = repmat(M, 2, 2) % 将M矩阵看成一个整体,形成一个2行2列的以M矩阵为元素的新矩阵 5. [r,c] = size(A) % 返回行数(r)和列数(c) 6. ones(x, y) % 形成一个x行y列的矩阵,用1填充 ones(size(A)) % 形成一个和A同样大小的矩阵 ones(n) % 形成一个n阶方阵 7. zeros... % 同ones 矩阵选择元素 8. M(2,1) % 选择第二行第一个元素,等价于 M(5) 9. M(:, 1) % ":"表示全选,这条语句表示选择第一列元素,选择某一行也是同理 10. M(2:1:5,:) % 选取第2到第5行的全部元素,默认为1可以省略不写 11. M(2:end,:) % 选取第2行到最后一行的全部元素 12. M(:) % 选择全部元素(以列向量表示),一般在求和的时候用的比较多(sum(M(:)) 13. ind = find(A) % 它可以用来返回向量或者矩阵中不为0的元素的位置索引, 一个只有0和1的矩阵 ind = find(A,2) % 返回前两个不为0的元素位置索引 14. A(i, j) = M % 将A矩阵的(i,j)位置赋值为M A(i) = M % 如果A是一个行或者列向量,直接用数字表示编号 矩阵的运算 15. C = A*B % 两个矩阵的乘积 16. C = A/B % 两个矩阵的除法(等于乘第二个矩阵的逆矩阵) 17. C = inv(B) % B的逆矩阵 18. C = A .* B % 两个形状相同的矩阵对应元素之间的乘除法需要使用“.*”和“./” 19. C = A./B % 同上 20. [r, c] = eig(M) % 求矩阵M的全部特征值,构成对角阵r,并求M的特征向量构成c的列向量。(c的每一列都是r中与之相同列的特征值的特征向量) 21. %%矩阵的大小判断,共有4种运算符:大于> ;小于< ;等于 ==;不等于~= X > 0 % 返回一个和A大小相同的矩阵,只有满足>0的元素位置才为1其余为0 X == 4 % 同上,只有元素为4的位置为1,其余为0 22. max(x) - x % 这里x是一个矩阵,4虽然是一个常数,但是matlab会自动扩展成与矩阵同样大小的由max(x)组成的矩阵,与x做减法运算 % 不仅是减法,对于乘除加都适用,但是这只适用于一个数自动扩展,而不适用于两个向量或者矩阵之间(矩阵之间用.-)

    常见函数

    1. disp("hello,world!") % 显示字符串、向量、矩阵等。 2. ans = [str1, str2, str3...] % 字符串连接 3. num2str(c) % 将数字变成字符串 disp(["该数字是:",num2str(c)]) % 拼接+展示字符串,记得中括号 4. A = input("enter A:") % 将输入的值赋给A, 可以是任意值,数字、矩阵、字符串皆可 5. s = sum(A) % 对矩阵求和(默认是按列求和),等价于 sum(A, 1), 得到一个行向量 s = sum(A, 2), 按行求和,得到一个行向量 6. A = 1:2:10 % 生成一个等差数列,从1到10公差为2 7. A = max(X) % 返回X矩阵中每列的最大元素,形成一个行向量 A = max(X(:)) % 返回X中最大的元素值 8. [m ,n] = size(A) % 返回A的行和列值, 如果是n = size(A)那么n就是一个行向量 9. A = sort(A) % 对A的每列进行按照升序排序,相当于sort(A, 1) % 如果对列进行排序,相当于sort(A, 2) % sort(A, 'descend', 2) 是按照行降序排序 [A, index] = sort(A, 'descend') % A是排好序的矩阵,index是每个元素在排好序后矩阵每列的位置 , 一般index用在向量比较多 10. x = abs(x) % 取x的绝对值 11. log(x) % 取x的对数 12. -10 + rand(n, 1) * 20 % 生成-10到10之间的随机数。rand(n,1)返回n行1列的0~1之间的随机数。 13. x = reshapre(x, 6, 2) % 将原来12*1的x矩阵转变为6*2的矩阵。 14. n=cumsum(x0) % 累加函数

    举一个例子 这是TOPSIS中的一个函数,如何求出 Di+ 呢?

    % 假设已知正向化矩阵为Z [n, m] = size(Z); D_P = (sum((repmat(max(Z),n,1)-Z).^2, 2)).^0.5;

    特殊函数

    数学规划类

    线性规划 2.非线性规划

    3.整数规划

    程序涉及结构

    顺序结构判断结构 if CR < 0.1 disp("yes!"); if CR>0.1 disp("prefect!"); end else disp("no~"); end 循环结构 S = [] for i = 1:n S = [S;x] % 不断用x扩充S矩阵,扩充到n行 end

    设置函数

    使用m文件设置函数

    单独新开一个m文件设置函数,然后在main函数中使用该函数。举一个例子来说明 function[x, y] = f(x1, x2) M = max(abs(x1 - x2)); % 记得后面的分号 x = M + 1; y = M - 1; end %% 参数表 % x, y为返回参数 % x1,x2为输入函数的参数 % f为函数名称 %% 函数作用 % 输入x1, x2 返回 x, y 函数之间可以嵌套,比如在 f1.m(函数)文件中可以使用 f2 函数
    Processed: 0.014, SQL: 9