新建脚本会打开一个编辑器,
可以在编辑器中输入相对应的代码
Ctrl + C?: 停止程序运行
clear all?: 清除Workspace 中的所有变量(右侧工具区)
clc?: 清除Command Window 中的所有命令(命令行窗口)
close all?: 关闭所有的图
%%:独占一行的注释(有上下横线的分割)
%?: 普通注释
;?: 若在编写代码时,我们未写;的时候,命令行窗口会详细显示我们的计算过程。
...?: 续行符,在命令结束后面,加续行符,下一行可以继续写命令
A = [1 2 3 4 5 6 ...
6 5 4 3 2 1];
whos :查看数据类型
1 + 1;
2 - 1;
2 * 1; % 数字相乘,数字与符号相乘
3 / 3;
a.*a; % a^2(元素与元素之间相乘)
s = 'a'; % 定义单个字符
abs(s) ; % 得到对应的ASCII码
char(97); % 得到ASCII码对应的字符
num2str(97); % 得到数字97
str = 'hello world'; % 定义字符串
length(str); % 得到字符串的长度
str(1): h % 对str进行索引
str = 'aardvark';
'a' == str
str(str=='a') = 'z'
ans = 1 1 0 0 0 1 0 0
str = 'zzrdvzrk'
练习题,让s2为逆序的s1
s1 = 'I like the letter E';
s2 = '';
for i = length(s1):-1:1
s2 = [s2 s1(i)];
end
A = [1 2 3; 4 5 2; 3 2 7];
B = zeros(5, 4, 3) ; % 5行4列3维的矩阵
c = 1:2:100 % 从1到100等差为2的等差数列构成的集合
F = [A B] % 表示A B的增广矩阵
A(1,1) = {[1 4 3; 0 5 8; 7 2 9]}; % 构造分块矩阵,每一块可以不一样
A(1,2) = {'Anne Smith'};
A(2,1) = {3+7i};
A(2,2) = {-pi:pi:pi};
A =
1 2 3
4 5 6
7 8 9
A(4) A(5)
2
5
A([1 3 5]) A([1 3]) A([1 3; 1 3])
1 7 5
1 7
1 7
1 7
A(1,3) A([1 3], [1, 3])
3
1 3
7 9
A * B ; % 矩阵相乘
A + B ; % 矩阵相加
A - B ; % 矩阵相减
A / B(A*inv(B)) ; % 矩阵的除法(逆矩阵)
A .* B ; % 每个对应元素相乘
A ./ B ; % 每个对应元素相乘
A = [1 2 3; 4 5 6; 7 8 9]
B = [3 4 5; 6 7 8; 9 10 11]
A .* B
3 8 15
24 35 48
63 80 99
B = A' % 矩阵的转置
eye(n) % 对角线为1,其他为0的nxn的矩阵
zeros(n1, n2) % 全为0的n1xn2的矩阵
ones(n1, n1) % 全为1的n1xn2的矩阵
diag([a1, a2, a3]) % 对角线为a1,a2,a3,其他为0的对角矩阵
max(A) % 对于矩阵中每一列找出最大值(min,sum,mean)
max(max(A)) % 矩阵中最大的值
sort(A) % 矩阵每一列排序
sortrows(A) % 矩阵每一行排序
find(A=a) % 矩阵中为a的位置
B =
? 1 4 3
? 2 5 2
? 3 2 7
B = A(:) ; % 竖向拉长
B =
? 1
? 2
? 3
? 4
? 5
? 2
? 3
? 2
? 7
B = inv(A); % 逆矩阵(非方针无法求逆)
B =
-0.9118 0.2353 0.3235 0.6471 0.0588 -0.2941 0.2059 -0.1176 0.0882
??rand(m,n)?: m行n列的均匀分布的伪随机数矩阵(0-1)
??rand(m,n,'double')?: m行n列的指定精度的伪随机数矩阵,参数还可以为“single”
??rand(RandStream, m, n)?: 指定RandStream(随机种子)m行n列的伪随机数矩阵
??randi(iMax, m, n)?: m行n列的均匀分布的伪随机数矩阵(0-iMax)
??randi([iMin, iMax], m, n)?: m行n列的均匀分布的伪随机数矩阵(iMin-iMax)
??randn(m,n)?: m行n列的标准正态分布的伪随机数矩阵(均值为0 ,方差为1)
A = rand(10,5) ; % 10行5列的随机矩阵
B = randi(5,10,5) ; % 10行5列的随机矩阵,最大值为5
C = randn(10,5) ; % 10行5列的随机矩阵,标准正态分布(均值为0,方差为1)
A =
0.1934 0.9508 0.8954 0.1439 0.0946 0.7544 0.4976 0.5825 0.6060 0.3232 0.3463 0.7551 0.5827 0.2545 0.7696 0.4186 0.7424 0.8549 0.3242 0.2341 0.1557 0.8311 0.0349 0.4018 0.7404 0.8190 0.1565 0.8854 0.4064 0.6928 0.6249 0.4573 0.4077 0.3862 0.8241 0.7386 0.6181 0.0364 0.6098 0.8280 0.8051 0.9322 0.7461 0.1669 0.2934 0.0672 0.8351 0.1548 0.1881 0.3094
B =
3 3 5 4 4 2 5 5 3 4 5 4 3 2 4 5 5 1 5 1 3 2 3 3 5 2 3 2 5 1 4 1 2 5 3 2 4 2 2 4 3 4 1 3 4 2 5 4 2 2
C =
0.6067 -0.7784 0.5501 1.0336 2.9745 1.6345 1.0996 1.8551 0.4198 -0.6226 -0.6235 -0.8556 -0.2773 0.6011 1.9203 -1.3501 0.0076 1.0666 -0.6740 0.9611 -1.1622 -0.9376 -2.0992 -1.0952 -0.5578 -0.9443 -0.6816 0.6385 -0.2676 -0.1066 -0.6712 -0.2601 0.3715 0.1866 -0.2152 0.5767 -0.2288 -0.3742 0.9509 0.4735 -2.0858 -0.5248 0.6953 -0.7905 1.3656 0.2360 1.1283 0.8776 -0.4895 -1.6378
行 、 列、层
cat函数用于拼接矩阵, n为1、2、3,A、B为矩阵
1表示行, 2表示列, 3表示层
reshape函数用于将矩阵变为n行m列的矩阵
A = [1: 3; 4: 6];
B = reshape(A, 3, 2)
student.name = 'John Doe';
student.id = 'aaaa';
student.number = 301073268;
student.grade =[100, 75, 73;...
95, 91, 85;...
100, 98, 72];
student
studetn =
? id: 'aaaa'
? number: 301073268
? grade: [3x3 double]
? name: 'John Doe'
student(2).name = 'John ';
student(2).id = 'aa';
student(2).number = 301;
student(2).grade =[100, 75, 73;...
95, 91, 85;...
100, 98, 72];
student
student =
包含以下字段的 1×2 struct 数组:
? id ? number ? grade ? name
exp() %指数函数
sin() %角度为弧度制
sind() %角度为角度(在三角函数后面加d)
abs函数可以用于求实数的绝对值、复数的模、字符串的ASCII码
a = abs(-4) % 实数的绝对值
b = abs(3+4i) % 复数的模
c = abs('a') % 字符串的ASCII码
a =
? 4
b =
? 5
c =
? 97
a = round(4.7) % round()四舍五入取整
b = fix(-3.2) % fix()固定取靠近0的那个整数,也就是舍去小数取整
c = florr(3.6) % floor()向下取整,取小于等于这个数的第一个整数
d = ceil(-3.8) % ceil()向上取整,取大于等于这个是的第一个整数
a =
? 5
b =
? -3
c =
? 3
d =
? -3
用于计算时间,得到程序运行的时间
tic
for variable=start:increment:end
commands
end
toc
? 在工作区内,鼠标右击该变量,选择删除
a = 1;
b = 2;
who
whos
您的变量为:
a b
Name Size Bytes Class Attributes
a 1x1 8 double
b 1x1 8 double
save命令:创建内存变量文件,存储变量
load命令:装入内存变量文件
save mydata a x % mydata为文件名(mydata.mat)
load mydata % mydata.mat内变量作为已知变量
% for循环语句
for i=1:n
i
End
% 表示长度
N = length(X)
%平均分成等分
x = linspace(x1,x2,N)
ones(5,1) %全1
zeros(2,3) %全0
% 函数
y = (x-1).^2 % 次方为 .^ n
% 定义函数
function [输出] = Lagrange(输入)
%输入
%输出
计算代码
end
+, -, *, /, ^
ln(x)函数: log(x)
e*x函数: exp(x)
n!:prod(1:n)
1x10^100:1e100
遵循所有运算法则
style | Example | |
---|---|---|
short | short类型4 | 3.1416 |
long | long类型15 | 3.141592653589793 |
shortE | 4科学计算 | 3.1416e+00 |
longE | 15科学计算 | 3.141592653589793e+00 |
bank | 2科学计算 | 3.14 |
hex | 16进制 | 400921fb54442d |
rat | 转换为有理数 | 355/113 |
fromat long
pi
3.141592653589793
format rat 3/13
3/13
3/13 2.307692307692308e-01
①文件名不可以以数字开头,大小写差别
②点击F5可以直接运行程序
③使用Ctrl+R可以对代码进行注释,Ctrl+Shift+R取消注释(利用每行一个%进行注释)
④使用Ctrl+I可以进行自动缩进
⑤
edit(which('mean.m')) % 打开内置函数
使用两个百分号%%进行分为两个节,运行节的时候可以点击运行节
点击该行的数字,并点击运行,可以跳过该行
实例中点击3,运行的时候跳过第3行
5.3 语句的使用:
Operator | Meaning |
---|---|
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
== | 等于 |
~= | 不等于 |
&& | 且 |
|| | 或 |
Flow Control | Meaning |
---|---|
if, elseif, else | 判断语句 |
for | 循环语句 |
switch, case | 选择语句 |
while | 循环语句 |
break | 终止语句 |
continue | 终止语句 |
end | 终止语句 |
pause | |
return |
判断语句
if condition1 % 一定要有
statement1
elseif condition2 % 可以没有
statement2
else % 可以没有
statement3
end
选择语句
switch expression
case value1 % value1=expression,执行statement1
statement1
case value2 % value2=expression,执行statement2
statement2
case value3 % value3=expression,执行statement3
statement3
otherwise % 上面都不成立,执行statement4
statement4
end
循环语句
while expression % expression条件成立,执行statement;否则跳出循环
statement
end
循环语句
for variable=start:increment:end % variable为变量,increament为步长,start为开始点,end为结束点(包含end)
commands
end
练习题,将A矩阵复制到B矩阵中,但是需要将A矩阵中的负数修改为正数
A = [0 -1 4; 9 -14 25; -34 49 64]; % A矩阵
B = zeros(size(A)); % 创建一个与A同大小的零矩阵
for i=1:size(A, 1) % 遍历A的每一行
for j=1:size(A, 2) % 遍历A的每一列
if A(i, j) < 0 % 若该元素小于0
B(i, j) = -A(i, j); % 则将该元素的负数赋给B
else % 否则直接赋给B
B(i, j) = A(i, j);
end
end
end
终止语句
打开函数文件
edit(which('mean.m')) % 打开mean函数
keyword output = function name(input)
%commend
%
%
...
code
例子:
function x = study(x0, v0, t)
% 计算自由落体运动
% x0: 初始位置
% v0:初速度
% t: 运动时间
% x: 下降位置
x = x0 + v0.*t + 1/2*9.8*t.*t;
funciotn [a F] = acc(v2, v1, t2, t1, m) % 输入多个参数(),输出多个参数[]
a = (v2- v1)./(t2-t1);
F = m.*a;
end
cos(10) % 输入一个参数
cos([1 2 3 4 5]) % 同时输入多个参数
ans = -0.839071529076452
ans =0.54030230586814 -0.416146836547142 -0.989992496600445 -0.653643620863612 0.283662185463226
parameter | meaning |
---|---|
inputname | variable name of function input |
mfilename | File name of currently running funcition |
nargin | Number of function input arguments |
nargout | Number of function output arguments |
varargin | Variable length input arguments list |
varargout | Variable length ouput arguments list |
f = @(x) exp(-2*x); % f(x) = e^(-2x)
x = 0:0.1:2; % x = (0.1 0.2 0.3 ... 2)
plot(x,f(x)); % x为横坐标,f(x)为纵坐标画图
用于存储该文件中的变量
a = magic(4);
b = magic(2);
save("mydata.mat", "-ascii") % 以ASCII码的形式存储所有变量到mydata.mat文件内(默认当前目录内,可以为任意文件目录下)
save("mydata.mat", "a", "-ascii") % 以ASCII码的形式只存储a变量到mydata.mat文件内 (即文件路径)
用于下载文件,以便能在matlab变量栏中打开
load ("mydata.mat", "-ascii") % 前面为ascii这里也为ascii
load("mydata.mat", "a", "-ascii")
用于打开execl文件,并读取文本
score = readtable("文件.xlsx") % 读取文本
data = readtable("文件.xlsx", "Range", "B2:D4"); % 读取文本的第B列到第D列,第2行到第4行
用于打开execl文件,并读取矩阵
score = readmatrix("文件.xlsx") % 读取文本
data = readmatrix("文件.xlsx", "Range", "B2:D4"); % 读取矩阵的第B列到第D列,第2行到第4行
用于打开execl文件,并读取元胞数组(cell)
score = readcell("文件.xlsx") % 读取文本
data = readcell("文件.xlsx", "Range", "B2:D4"); % 读取元胞数组的第B列到第D列,第2行到第4行
[data header] = xlsread("文件.xlsx") % data读取数字,header读取标题
x = [1 2 3];
xlswrite("文件.xlsx", x, 1, "E2:E4"); % 将矩阵x添加到第一页,第E列,第2行到第4行
xlswrite("文件.xlsx", {'mean'}, 1, ' E1'); % 将文字mean添加到第一页,第E列,第1行中
x = [1 2 3];
writematrix(x, "文件.xlsx", 'Sheet', 1, "Range", "E2:E4"); % 将x矩阵添加到第E列的第2行到第4行
writecell(x, "文件.xlsx", 'Sheet', 1, "Range", "E2:F4"); % 将x元胞数组添加到第E列到第F列,第2行到第4行
用于绘图,==只保留最后一个图形==,其他图形会被清除
plot(x, y) % x为横坐标,y为纵坐标
plot(y) % 默认x=1, 2, 3...
==用于保留图形==,保证图形不被清除
hold on
plot(cos(0:pi/20:2*pi)) % 绘制两个图像,一个为cos,一个为sin
plot(sin(0:pi/20:2*pi)) % 共同保留在一共图内
hold off
example:
==用于改变图像的颜色,类型,标记==
plot(x, y1, '--*') % '--*'为str字符
legend()函数
用于给出==图标==
lengend('function1', 'function2'...) % 标记function1、function2...等图标
title('名称')用于给出==图像名称==
title('名称')
xlabel('名称')、ylabel('名称')、zlabel('名称')用于给出==xyz坐标名称==
xlabel('名称')
ylabel('名称')
zlabel('名称')
exapmel:
x = 0:0.1:2*pi;
y1 = sin(x); y2 = exp(-x);
plot(x, y1, '--*', x,y2, ':o');
xlabel('t=0 to 2\pi'); % 2\pi为2Π x坐标的名称
ylabel('values of sin(t) and e^{-x}'); % e^{-x}为e^(-x) y坐标的名称
title('Function Plots of sin(t) and e^{-x}'); 图像的名称
legend('sin(t)', 'e^{-x}');
text()函数用于将函数写在图像内
str = '$$ function $$'; % function可以为任意
text(x坐标, y坐标, str, 'Interpreter', 'latex')
annotation('arrow', 'X', [ , ], 'Y', [ , ]); % X:[ , ],Y:[ , ]
exampel:
str = '$$ \int-{0}^{2} x^2\sin(x) dx $$'; % \int表示积分符号,{0}^{2}表示积分区间,
text(0.25, 0.25, str, 'Interpreter', 'latex'); % (0.25,0.25)为坐标
annotation('arrow', 'X', [0.32,0.5], 'Y', [0.6, 0.4]); % X:[0.32,0.5],Y:[0.6,0.4]
h = plot(x,y);
h = plot(x,y);
get(h)
set(h, "XLim", [0, 2*pi]);
set(h, "YLim", [-1.2, 1.2]);
x = -10:0.1:10;
y1 = x.^2 - 8;
y2 = exp(x);
figure, plot(x,y1); % 图像1,在figure1
figure, plot(x,y2); % 图像2,在figure2
figure('Position', [left, bottom, width, height]);
subplot(m, n, 1) % figure1上面
subplot(n,m,1); plot(x,y1);
subplot(n,m,2); plot(x,y2);
subplot(n,m,3); plot(x,y3);
subplot(n,m,4); plot(x,y4);
控制grid、box、axis
function | meaning |
---|---|
grid on/off | 控制坐标区网格线 |
box on/off | 控制坐标区轮廓 |
axis on/off | 控制坐标轴 |
axis normal | 自动调整轴的纵横比和数据单元的实际缩放比例 |
axis square | 使当前轴区域为方形 |
axis equal | 设置纵横比,使数据单位在每个方向上都相同 |
axis equal tight | 将轴限制设置为数据范围 |
axis image | 让图表紧紧围绕数据 |
axis ij | 将坐标系的原点放置在左上角 |
axis xy | 将原点放置在左下角 |
formattype:
option | Bitmap Image Format(放大会模糊) |
---|---|
'jpeg' | JPEG 24-bit |
'png' | PNG 24-bit |
'tiff' | TIFF 24-bit(compressed) |
'bmpono' | BMP Monochrome |
'bmp' | BMP 24-bit |
'bmp256' | BMP 8-bit(256 color, uses a fixed colormap) |
option | Vector Graphics Format(放大不会模糊) |
---|---|
'pdf' | Full page Portable Document Format(PDF)color |
'eps' | Encapsulated PostScript(EPS) Level 3 black and white |
'epsc' | Encapsulated PostScript(EPS) Level 3 color |
'meta' | Enhanced Metafile(Windows only) |
'svg' | SVG(scalable vector graphics) |
'ps' | Full-page PostScript(PS) Level 3 black and white |
option | Vector Graphics Format(放大不会模糊) |
---|---|
'psc' | Full-page PostScript(PS) Level 3 color |
特殊的图形