博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
命令01-MATLAB命令
阅读量:5820 次
发布时间:2019-06-18

本文共 6555 字,大约阅读时间需要 21 分钟。

前言: 此篇并非详细介绍各种命令,只是以表格的形式记录 MATLAB 学习过程中试过的一些简单命令,记录下来将来自己查阅方便。边学边补充。

1. 基础

1.1 基本命令列表

命令 功能
who 显示出到目前为止所有变量的名称
whos 告诉我们当前内存中的变量,类型,每个变量所分配的内存空间,以及它们是否是复数
clear 清除全部变量
clear x y z 清除变量 x,y,z
format rat 自动查找最接近结果的比例式
pi Π值
e e值
sqrt(x) 求x的平方根
log(y) 求y的自然对数
log10(x) 得到以 10 为底的对数
cos(pi/4) 三角函数:求cos值
atan(pi/3) 反三角函数
a = 2 + 3i a为复数
x = [1:5]; 创建含有5个元素的x数组

2. 向量与矩阵

2.1 向量相关命令列表

命令 功能
a = [2; 1; 4] 创建一个列向量
v = [2 0 4] 创建一个行向量
y = a' 求向量a的转置
w = [u; v] 合并列向量
u = [r, s] 合并行向量
x = [xi : q: xe] 创建等差元素向量
y = x .^ 2 向量的乘方
linspace(a, b, n) 创建 a、 b 之间含有 n 个等差元素的向量
logspace(a, b, n) 创建 10a 和 10b 之间 n 个对数值等差的向量
length(A) 返回向量A的长度
J.*J 向量的点乘
mag = sqrt(sum(J.*J)) 求向量u(不带复数)的模
v = conj(u) 求向量u的转置
c = sqrt(sum(conj(u).*u)) 求向量u(带有复数)的模(一步到位)
B = abs(A) 返回向量每个位置的数的绝对值
dot(a, b) 向量的点乘
mag = sqrt(dot(J,J)) 求向量 J 的模
C = cross(A, B) 求向量的叉乘
A(i) 向量 v 的第 i 个元素
v( : ) 列出向量的所有元素
A(4:6) 选出第 4 到第 6 个元素组成一个新的、含有 3 个元素的向量

注: 向量的点乘计算公式: A·B  = \sum_{i}^{n} a_i * b_i  \qquad A = (a_1, a_2, a_3, \dots, a_i), B = (b_1, b_2, b_3, \dots, b_i)

2.2 矩阵相关命令列表

命令 功能
A = [-1,6; 7, 11] 创建矩阵
B = A' 求矩阵A的转置。若A含有复数,转置操作会自动计算复数的共轭值
D = C.' 转置复数矩阵而不计算它的共轭值
C = A .* B] 数组乘法
C = A * B] 矩阵相乘
A = [1 2 3 4]; b = 2; C = b + A 把数量值加到行向量
eye(n) 创建n*n单位矩阵
zeros(m, n) 创建 m×n 的零矩阵
ones(m,n) 创建 m×n 的元素都为1的矩阵
A(m,n) 选出矩阵第 m 行 n 列的元素
A(:,i) 引用第 i 列的所有元素
A(:,i:j) 选出从第 i 列到第 j 列之间的所有元素
A(2:3,1:2) 选出第二到第三行同时处于第一和第二列的元素
A(1,1) = -8 把第一行第一列元素的值改为-8
A(2,:)=[ ] 删除 A 的第二行
E = A([1,1,1,1], : ) 复制 A 矩阵的第一行四次来创建一个新矩阵
F = A([1,2,1], : ) 引用两次 A 的第一行创建新矩阵(理解:新矩阵有三行,分别是A矩阵的第一行,第二行,第一行)

2.3 行列式与线性系统求解命令列表

命令 功能
det(A) 求矩阵A的行列式
rank(A) 求矩阵A的秩
inv(A) 求矩阵A的逆矩阵
x = inv(A)*b 求解方程组的解
x = pinv(A)*b 伪逆矩阵求解方程组的解
rref(A) 求解矩阵 A 降行后的梯形形式
magic(n) 产生n*n的魔方矩阵(矩阵的元素从 1 到 n2 之间,并且行元素的和等于列元素的和)
lu(A) 求解矩阵A的LU分解

3. 绘图与图形

3.1 2D绘图基础

绘图三个步骤: ①定义函数;②指定要绘制的函数图形的值范围;③调用 MATLAB 的 plot(x, y)函数

命令 功能
[ start : interval : end ] 定义区间和增量
x = [0:0.01:10]; 确认x的区间
y = cos(x); 定义函数
plot(x, y), xlabel('x'), ylabel('cos(x)'); 调用画图函数,并标注x轴y轴标签
fplot(@(t)exp(-2.*t).*sin(t), [0, 4]);
xlabel('t'), ylabel('f(t)'), title('阻尼弹力')
fplot 生成尽可能精确的的图象
plot(x,y), grid on, axis equal(或者 axis square) 添加网格,且两坐标轴比例和间距都相同(产生正方形形状的图像)
t = [0:0.01:5];
f = exp(-t);
g = exp(-2*t);
plot(t,f,t,g,'--')
在一个坐标系里同时画出两个图像,第二个图像用虚线显示
'-' ‘--’ ‘-.’ ':' 分别是:实线,虚线,虚点线,点线;
若不指定线的类型,全部默认为实线,但是颜色不同
x = [0:0.01:2];
y = sinh(x);
z = cosh(x);
plot(x,y,x,z,'-.'), xlabel('x'), ylabel('Potential'), legend('sinh(x)','cosh(x)');
绘制两个函数的图像并添加图例 (legent函数),可用鼠标拖动图例到满意位置
plot(x,y,'r',x,z,'b') 设置线条颜色,红色和蓝色
plot(x,y,'r',x,z,'b--') 红色实线,蓝色虚线
w, k, b, r, c, g, m, y 白色,黑色,蓝色,红色,青色,绿色,洋红,黄色
axis ( [xmin xmax ymin ymax] ) 描述画图范围
plot(x,y), axis([0 5 -1 1]) 显示x在0到5,y在-1到1之间的图像
subplot(m, n, p) 绘制子图:这里 m 和 n 告诉 MATLAB 产生的产生的子图有 m 行和 n 列, p 用来告诉 MATLAB 我们所要贴上去的某个已经绘制的图形窗口。
x = [0:0.01:5];
y = exp(-1.2*x).*sin(20*x);
subplot(1,2,1);
plot(x,y),xlabel('x'),ylabel('exp(-1.2x)*sin(20x)'),axis([0 5 -1 1])
y = exp(-2*x).sin(20x);
subplot(1,2,2);
plot(x,y),xlabel('x'),ylabel('exp(–2x)*sin(20x)'),axis([0 5 -1 1])
定义x的范围;
定义第一个函数;
一行两列窗格,从左至右编号,接下来生成的图像将放置在第一个窗格。
生成第一个函数图像
定义第二个函数;
一行两列窗格,从左至右编号,接下来的图像将放置在第二个窗格;
生成第二个函数图像
x = linspace(a,b);
x = linspace(a,b,n);
在 a 到 b 间取出均匀分布的 100 个点;
在 a、 b 之间取出均匀分布的 n 个点。
x = linspace(0,2*pi);
plot(x, cos(x)),axis([0 2*pi -1 1]);
hold on;
plot(x, sin(x)), axis ([0 2*pi -1 1]);
一个图形上绘制 cos(x)的同时再绘上 sin(x)

注: ①当一个函数是由二个或更多个函数相乘构成,别忘记在相乘时加上“.”以便告诉 MATLAB 我们是对两个矩阵进行相乘。    ②对 sin 函数平方的正确方法是使用数组相乘记号,即使用 A.^B 表示 AB。即“y = sin(5*x).^2;”。

3.2 离散数据绘图

命令 功能
x = [1:5];
y = [50,98,75,80,98];
bar(x,y), xlabel('学生'),ylabel('分数'), title('期末测试');
生成二维条形图
stem(x, y) 生成针头图
stem(t,f,'--rp'),xlabel('时间(秒)'),ylabel('弹簧响应') 指定图像中标记的颜色形状:包括方块(s)、菱形(d)、五角星(p)、圆圈(o)、叉号(x)、星号(*)和点号(.)。

3.3 等高线图和三维图

命令 功能
[x,y] = meshgrid(-5:0.1:5, -3:0.1:3); meshgrid 产生矩阵元素,元素 x 和 y 按照我们分别所指定的范围和增量来产生。
z = x.^2 + y.^2; 定义含有两个变量的函数
[C,h] = contour(x,y,z);
set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2)
绘制等高线,并设置标签
[x,y] = meshgrid(-2:0.1:2);
z = y.*exp(-x.^2 - y.^2);
contour(x,y,z),xlabel('x'),ylabel('y')
contour3(x, y, z, 30)
surface(x,y,z,'EdgeColor',[.8 .8 .8],'FaceColor','none');
grid off;
view(-15,20)
设置x和y的范围和增量;
定义函数;
生成等高线函数图像;
生成30个级别的三维等高线函数图像。
使用surface函数稍微美化一下生成的图像
[x,y] = meshgrid(-2*pi:0.1:2*pi);
z = cos(x).*sin(y);
mesh(x,y,z),xlabel('x'),ylabel('y'),zlabel('z');
surf(x,y,z),xlabel('x'),ylabel('y'),zlabel('z');
mesh(x, y, z),surf(x,y,z), surfc(x,y,z),, surfl(x,y,z)等函数均能产生三维图象,有些许不同。

4. 统计和MATLAB

4.1 创建柱状图

命令 功能
a = [54.5,64.5,74.5,84.5,94.5];
b = [1,3,17,8,7];
bar(a,b),xlabel('分数'),ylabel('学生人数'), title('期中考代数成绩')
生成柱状图
a = [54.5,64.5,74.5,84.5,94.5];
b = [1,3,17,8,7];
barh(a,b),xlabel('学生人数'),ylabel('考试分数')
生成横状柱状图
a = [54.5,64.5,74.5,84.5,94.5];
b = [1,3,17,8,7];
bar3(a,b),xlabel('考试分数'),ylabel('学生人数')
生成三维柱状图
x = [54.5,64.5,74.5,84.5,94.5];
garcia= [0; 3; 18; 13; 10];...
simpson= [3; 5; 20; 10; 5];...
smith= [1; 2; 15; 17; 8];
y = [garcia simpson smith];
bar(x,y),xlabel('考试分数'),ylabel('学生人数'),legend('加西亚','辛普森','史密斯')
多组数据合并画柱状图

4.2 基本统计

命令 功能
a = [11,12,16,23,24,29];
mean(a)
求数据的平均数
N = sum(y) 求y数组的和
x = [55, 63,69,70,75,78,82,84,85,88,90,96,100];
y = [1,2,1,6,4,7,2,1,3,2,4,2,1];
s = sum(x.*y);
N = sum(y);
ave = s/N;
此时x数组表示的是分数,y数组表示的是分数对应的人数。两个数组的点乘之和是指分数总数,则ave 求的是平均分
function ave = myaverage(x, N)
sizex = size(x);
sizeN = size(N);
if sizex(2) ~= sizeN(2)
  disp('错误:数据必须具有相同的维数。')
else
  total = sum(N);
  s = x.*N;
  ave = sum(s)/total;
end
新建.m脚本,保存左边的代码:
  “~=”表示不等于;
  “end”用来结束if-else语句;
  size()函数求的是矩阵的行列大小,返回一个包含两个元素的行向量,第一个元素是矩阵的行数,第二个是矩阵的列数;
for index = start : increment : finish
  statements
end
for语句语法:若是忽略增量,则默认为1
function sumx = mysum(x)
%获取元素个数
num = size(x);
%初始化总和
sumx = 0;
for i = 1:num(2)
 sumx = sumx + x(i);
end
“%”表示注释;
mean(x);
median(x);
std(x);
求数组x的平均数
求数组x的中位数
求数组x的标准偏差
input();
disp();
接受用户输入;
输出内容;
while condition
 statements
end
while语句语法
switch expression
 case 1
  do these statements
 case 2
  do these statements
 case n
  do these statements
end
switch语法

5. 代数方程求解和其他符号工具

命令 功能
syms x;
x = solve(x+3==0);
x保存方程的解
syms x;
x = solve(x^2-6*x-12==0)
x(1)为第一个根,x(2)为第二个根;
syms x;
equ = x + 3 == 0;
x = solve(equ, x);
将方程赋给一个变量
syms w x y z;
equ1 = w + x + 4*y + 3*z == 5;
equ2 = 2*w +3*x+y - 2*z == 1;
equ3 = w + 2*x - 5*y + 4*z == 3;
equ4 = w - 3*z == 9;
s = solve(equ1,equ2,equ3,equ4, w, x, y, z);
w = s.w;
x = s.x;
y = s.y;
z = s.z;
求解方程组并取出根
d = 'x^2 - 6*x -12';
ezplot(d, [-2, 8])
画出函数图像,并限定了x轴范围
syms x;
expand((x - 1)*(x + 4));
展开方程式
syms x;
collect(x*(x^2 - 2));
合并同类项
syms x y;
factor(x^2 - y^2);
因式分解
syms x;
simplify((x^4-81)/(x^2-9));
多项式相除
syms x;
s = taylor(sin(x), x, 0, 'order', 20);
泰勒展开式:对x在x=0处展开,阶数是20。

转载于:https://juejin.im/post/5b27f2e9e51d455886491bc2

你可能感兴趣的文章
选数 2002年NOIP全国联赛普及组
查看>>
js 显示当前系统时间
查看>>
python基础—基本数据类型—数字,字符串,列表,元组,字典
查看>>
ui主线程控件的更新就让这个activity的异步任务做完整
查看>>
SQLite用法
查看>>
芯嵌stm32开发板配套入门教程--目录
查看>>
验证码
查看>>
第1讲 微信小程序概述
查看>>
根据name获取控件
查看>>
django_filter,Search_Filter,Order_Filter,分页
查看>>
Oracle 中MERGE语句的用法
查看>>
Greenplum 查看连接与锁信息数据字典
查看>>
《伟大的计算原理》一云计算
查看>>
动态语句创建临时表权限不足
查看>>
hdu 1026 Ignatius and the Princess I
查看>>
进程互斥与同步
查看>>
使用TortoiseGit对android studio工程进行代码版本控制
查看>>
【LeetCode每天一题】Longest Valid Parentheses(最长有效括弧)
查看>>
idea中pom.xml添加了新的maven依赖,点击import changes没反应
查看>>
MQTT, XMPP, WebSockets还是AMQP?泛谈实时通信协议选型 good
查看>>