【MATLAB】常用命令快速入门,国赛加油

矩阵运算 矩阵的基本生成 m1 = 1:5 % 生成行矩阵[1,2,3,4,5] m2 = 1:2:10 % 起点:步长:终点 [1,3,5,7,9] linspace(x1,x2,n) % 生成 n 个点。这些点的间距为 (x2-x1)/(n-1)。 m3 = linspace(0,5,11) % [0,0.5,1,1.5,2,2.5,3,3.5,4,4.5,5] m4 = 1:3; m5 = 4:6; m6 = [m4, m5] % [1,2,3,4,5,6] 矩阵组合 m7 = [m4; m5] % [1,2,3] % [4,5,6] 特殊矩阵 eye(n) % 单位矩阵 zeros(n) % n*n的全零矩阵 zeros(m,n) % m*n的全零矩阵 zeros([m,n]) ones(n) & n*n的全一矩阵 ones(m,n) % m*n的全一矩阵 ones([m,n]) 随机数矩阵 rand % 生成0~1随机数,符合均匀分布 rand(n) % 生成n*n的随机数矩阵 rand([m,n]) % 生成m*n的随机数矩阵 randi(max) % 1~max的随机整数 randi(max,m) % 1~max的随机m阶整数矩阵 randi(max,[m,n]) % 1~max的随机m*n整数矩阵 randn(n) % 生成n*n的随机数矩阵(服从正态分布) randn([m,n]) % 生成m*n的随机数矩阵(服从正态分布) 获取矩阵的行列数 [row,col] = size(m) % 返回矩阵m的行数和列数的矩阵 矩阵转置、逆矩阵 m' % 矩阵m的转置 inv(m) % 矩阵m的逆矩阵 特征值、特征向量 [V, D] = eig(m) % V:特征向量矩阵,D:特征值矩阵,对角元素为特征值 加减乘除、乘方 a = [1,2,3] b = [4,5,6] a + b a - b a * b % 行列元素对应相乘求和返回矩阵 a .* b % 仅仅是相同位置元素相乘 a / b % 等价于a * inv(b) a ./ b % 仅仅是相同位置元素相除 a \ b % 等价于inv(a) * b 求 Ax = b的解 a ^ n % a的次方 a .^ n % 每个元素的n次方 广播机制 a = [1,2;4,5] b = 1 a + b % 把b广播成[1,1;1,1] 逻辑运算 a = [1,2,3] b = [1,3,2] a == b % 返回比较矩阵,对应元素进行判断,相同为1,不同为0 a > b a < b a == 1 % 也满足广播机制 % 保留a大于2的元素,将小于等于2的元素置为0 a .* (a > 2) 矩阵的索引 m = [1,2,3;4,5,6] m(3) = 2 % 按列检索 m(row,col) % 返回第row行,第col列的值 m([1,2],[1,2]) % 前两行,前两列的元素 m(1:2, 1:2) MATLAB基础语法 变量类型和转化

数值类型

默认是double类型,可进行加减乘除等运算

字符串类型

s1 = "hello"; s2 = 'world'; [s1,s2] % 字符串类型矩阵 [hello,world] s1 + s2 % helloworld 用+实现字符串拼接

字符串和数值的转化

str2num() % 字符串转数字 str2num("5")+4 % 9 num2str() % 数值转字符串 num2str(num,n) % 把数字num转化成n位小数 num2str(1/3,2) % 0.33 输入和输出

输入语句

value = input("请输入一个值:") % 输入数值、矩阵 string = input("请输入一个字符串:",'s') % 输入字符串,需要加第二个参数's'

输出语句

disp() % 输出多个字段时,需要将多个字段转化成字符串矩阵,再进行输出 disp(["hello",2]) % ["hello","2"] disp(["1/3=",num2str(1/3,2)]) % "1/3=" "0.33" 运算符和if else控制语句

关系运算符

1 < 2 % 1表示真,非0都是真 1 > 2 % 0表示假

逻辑运算符

% & 与 % | 或 % ~ 非 (1 < 2) & (1 > 2) % 0 (1 < 2) | (1 > 2) % 1 ~((1 < 2) & (1 > 2)) % 1

if else 语句

value = input("请输入数字:") if(value == 1) disp("1既不是质数也不是合数") elseif(isprime(value)) disp("输入是质数") else disp("输入是合数") end for循环和while循环

for循环

% 求1加到100 sum = 0; for i = [1:100] sum = sum + i; end % 二重for循环 for i = 1:3 % 执行3次 for j = 1:3 % 执行3次 disp([i,j]) % 一共执行9次 end end % continue语句(结束当前循环) for i = 1:3 for j = 1:3 if(i == 2) continue; end disp("i = "+num2str(i)+", j = "+num2str(j)); end end % i = 1, j = 1 % i = 1, j = 2 % i = 1, j = 3 % i = 3, j = 1 % i = 3, j = 2 % i = 3, j = 3 % break语句 for i = 1:3 for j = 1:3 if(j == 2) break; end disp("i = "+num2str(i)+", j = "+num2str(j)); end end % i = 1, j = 1 % i = 2, j = 1 % i = 3, j = 1 % return语句 for i = 1:3 for j = 1:3 if(j == 2) return; end disp("i = "+num2str(i)+", j = "+num2str(j)); end end % i = 1, j = 1

while循环

n = 1 while(n<5) disp(n) n = n + 1; end 练习题 生成[min,max]之间的随机(整数)数矩阵

min和max为用户输入;行列数为用户输入;
小数或整数由用户指定;最后输出结果(如何使每次输出的结果相同?)
相关知识点:input、if……else、rand、randi、disp

val = input("请输入矩阵元素范围[min,max]:"); size = input("请输入矩阵行列数[row,col]:"); isInt = input("请输入元素类型 0)小数 1)整数:"); rand('seed',0); % 加入随机种子使得每次获得的结果一致 if isInt == 0 res = (val(2) - val(1)) * rand(size) + val(1); else res = randi(val,size); end disp(res) 模拟圆周率pi

参考思路:蒙特卡罗法;点数为用户输入值

相关知识点:input、if……else、for循环或while循环、rand、disp

allPoints = input("请输入生成的总点数:"); count = 0; for i = 1:allPoints if rand^2 + rand^2 <= 1 count = count + 1; end end res = count / allPoints * 4; disp(res); 斐波那契数列求和

斐波那契数列的第n项和前n项和,n为用户输入值1,1,2,3,5,8,13,21,34,55......

递推公式:F[n] = F[n-1] +F[n-2];

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwydsz.html