MATLAB基本语法
MATLAB 提供了一些特殊的一些数学符号的表达,像圆周率 π, Inf = ∞, i (and j) = √-1 etc. Nan 代表“不是一个数字”。
实践:
%1、键入79855*98975,请问输出中的e代表上面
%2、键入7/0后,输出的结果是什么。
%3、abs(9+4i)是什么意思,结果是多少?
MATLAB常用的运算符和特殊字符如下所示:
A = [1 4 5 3;2 4 1 2];
如上所示便是建立矩阵,其中分号代表另外一行。
%建四个4*4矩阵A,B,C,D。
+ 加;加法运算符
%实验:计算A+B,C+D
- 减;减法运算符
%实验:计算A-B,C-D
* 标量和矩阵乘法运算符
%实验:计算2*A,3*B,C*D
.* 数组乘法运算符
%实验:计算2.*A,3.*B,C.*D并与上式比较
^ 标量和矩阵求幂运算符
%实验:计算2^A,B^2,C^D
.^ 数组求幂运算符
%实验:计算2.^A,B.^2,C.^D
\ 矩阵左除
%实验:计算2\A,B\3,C\D;
/ 矩阵右除
%实验:计算2/A,B/3,C/D;
.\ 阵列左除
%实验:计算2.\A,B.\3,C.\D;
./ 阵列右除
%实验:计算2./A,B./3,C./D;
: 向量生成;子阵提取
%实验:尝试E=[2:12],F=[3:2:99]
( ) 下标运算;参数定义
%实验:尝试A(1),B(4),C(2,3),D([1,9])
后面的作了解即可。
_ 引用符号和转置运算符
._ 非共轭转置运算符
= 赋值运算符
% 注释用的,代码不执行
MATLAB变量
每个MATLAB变量可以是数组或者矩阵。
在使用变量之前,必须进行赋值。
当系统接收到一个变量之后,这个变量可以被引用。
%实验:设置两个变量x和y,给x赋值7,y赋值9,计算x*y,x/y,x^y的值
MATLAB如何显示已经使用的变量名?
在MATLAB中可以使用 who(whos) 命令显示所有已经使用的变量名。(自己尝试一下两者的区别)
长任务可以通过使用省略号(…)延伸到另一条线路。例如,
A=[9 8 4 7 5 4 5;1 2 3 5 6 9 1;...
4 8 5 9 5 1 7];
MATLAB格式命令
默认情况下,MATLAB 四个小数位值显示数字。这就是所谓的 short format.
如果想更精确,需要使用 format 命令。
长(long ) 命令格式显示小数点后16位。
%实验,键入下文
format long %控制格式
x = 7 + 10/3 + 5 ^ 1.2
%将long分别改为short、bank、short e、rat和long e试一试
向量是一维数组中的数字。 MATLAB允许创建两种类型的矢量:
- 行向量
- 列向量
创建行向量括在方括号中的元素的集合,用空格或逗号分隔的元素。
%键入r = [7 8 9 10 11]和c = [7; 8; 9; 10; 11]的区别
MATLAB创建矩阵
矩阵是一个二维数字阵列。
在MATLAB中,创建一个矩阵每行输入空格或逗号分隔的元素序列,最后一排被划定一个分号。
例如,下面创建了一个3×3的矩阵:
m = [1 2 3; 4 5 6; 7 8 9]
%请尝试一下eye(n),ones(n,m),zeros(n,m),ones(n),zeros(n),n,m可以去任何正整数。
MATLAB管理会话的命令
MATLAB提供管理会话的各种命令。如下表所示:(先要学会clc,clear,help)
clc %清楚命令窗口
clear %删除变量
help 关键词 %查询某个函数或关键词的用法或意义,例如help ones
命令 | 目的/作用 |
---|---|
clc | 清除命令窗口。 |
clear | 从内存中删除变量。 |
exist | 检查存在的文件或变量。 |
global | 声明变量为全局。 |
help | 搜索帮助主题。 |
lookfor | 搜索帮助关键字条目。 |
quit | 停止MATLAB。 |
who | 列出当前变量。 |
whos | 列出当前变量(长显示)。 |
MATLAB的系统命令
使用MATLAB的时候有一些系统命令可以方便我们的操作,如在当前的工作区中可以使用系统命令保存为一个文件、加载文件、显示日期、列出目录中的文件和显示当前目录等。
下表列举了一些MATLAB常用的系统相关的命令:(均可后期在掌握,先了解即可)
命令 | 目的/作用 |
---|---|
cd | 改变当前目录。 |
date | 显示当前日期。 |
delete | 删除一个文件。 |
diary | 日记文件记录开/关切换。 |
dir | 列出当前目录中的所有文件。 |
load | 负载工作区从一个文件中的变量。 |
path | 显示搜索路径。 |
pwd | 显示当前目录。 |
save | 保存在一个文件中的工作区变量。 |
type | 显示一个文件的内容。 |
what | 列出所有MATLAB文件在当前目录中。 |
wklread | 读取.wk1电子表格文件。 |
MATLAB输入和输出命令
MATLAB提供了以下输入和输出相关的命令:
尝试在以下代码disp("小奇最帅哈哈哈")
k=input("你认为小奇帅么?1、帅,2、很帅,3、非常非常帅,其他、帅出天际");
fscanf和fprintf等了解c之后在去了解
命令 | 作用/目的 |
---|---|
disp | 显示一个数组或字符串的内容。 |
fscanf | 阅读从文件格式的数据。 |
format | 控制屏幕显示的格式。 |
fprintf | 执行格式化写入到屏幕或文件。 |
input | 显示提示并等待输入。 |
; | 禁止显示网版印刷 |
fscanf和fprintf命令的行为像C scanf和printf函数。他们支持格式如下代码:
格式代码 | 目的/作用 |
---|---|
%s | 输出字符串 |
%d | 输出整数 |
%f | 输出浮点数 |
%e | 显示科学计数法形式 |
%g | %f 和%e 的结合,根据数据选择适当的显示方式 |
用于数字显示格式的函数有以下几种形式:
Format函数 | 最多可显示 |
---|---|
format short | 四位十进制数(默认) |
format long | 15位定点表示 |
format short e | 五位浮点表示 |
format long e | 15位浮点表示 |
format bank | 两个十进制数字 |
format + | 正,负或零 |
format rat | 有理数近似 |
format compact | 变量之间没有空行 |
format loose | 变量之间有空行 |
MATLAB向量,矩阵和阵列命令
下表列出了MATLAB用于工作数组、矩阵和向量的各种命令:
尝试以下代码:
A = ones(5);
max(A)
min(A)
sum(A)
%猜猜为什么会这样显示
%至于矩阵的秩呀,逆呀什么的,看你们自己的学习情况了呗
命令 | 作用/目的 |
---|---|
cat | 连接数组 |
find | 查找非零元素的索引 |
length | 计算元素数量 |
linspace | 创建间隔向量 |
logspace | 创建对数间隔向量 |
max | 返回最大元素 |
min | 返回最小元素 |
prod | 计算数组元素的连乘积 |
reshape | 重新调整矩阵的行数、列数、维数 |
size | 计算数组大小 |
sort | 排序每个列 |
sum | 每列相加 |
eye | 创建一个单位矩阵 |
ones | 生成全1矩阵 |
zeros | 生成零矩阵 |
cross | 计算矩阵交叉乘积 |
dot | 计算矩阵点积 |
det | 计算数组的行列式 |
inv | 计算矩阵的逆 |
pinv | 计算矩阵的伪逆 |
rank | 计算矩阵的秩 |
rref | 将矩阵化成行最简形 |
cell | 创建单元数组 |
celldisp | 显示单元数组 |
cellplot | 显示单元数组的图形表示 |
num2cell | 将数值阵列转化为异质阵列 |
deal | 匹配输入和输出列表 |
iscell | 判断是否为元胞类型 |
MATLAB绘图命令
MATLAB提供了大量的命令绘制图表。下表列出了一些常用的命令绘制:
实验:假设小奇跑步速度为5m/s,请求出他1s,2s,3s...15s内跑过的路程,
并且组成一个数组s,然后用plot画出路程与时间的函数图像(提示,时间数据为1:15),
同时在图像的顶头用给函数图像起名为小胖胖的减肥历程,x轴标上时间,y轴标上路程。
实验2:小胖胖回想过去二十多年时光,感觉自己的身高和体重在随着年龄增长而线性增长,
直到20才停止,以年龄为自变量[1:20],体重w为因变量,身高h为因变量,计算出w和h数组,
并用plot3画出三维函数图像。(不会plot3先help plot3一下,瞿胖胖1岁身高体重为40cm,12kg,20岁时为2m,85kg);
其他的诸如fplot,subplot,hold,axis可以详细了解一下
命令 | 作用/目的 |
---|---|
axis | 人工选择坐标轴尺寸 |
fplot | 智能绘图功能 |
grid | 显示网格线 |
plot | 生成XY图 |
打印或绘图到文件 | |
title | 把文字置于顶部 |
xlabel | 将文本标签添加到x轴 |
ylabel | 将文本标签添加到y轴 |
axes | 创建轴对象 |
close | 关闭当前的绘图 |
close all | 关闭所有绘图 |
figure | 打开一个新的图形窗口 |
gtext | 通过鼠标在指定位置放注文 |
hold | 保持当前图形 |
legend | 鼠标放置图例 |
refresh | 重新绘制当前图形窗口 |
set | 指定对象的属性,如轴 |
subplot | 在子窗口中创建图 |
text | 在图上做标记 |
bar | 创建条形图 |
loglog | 创建双对数图 |
polar | 创建极坐标图像 |
semilogx | 创建半对数图(对数横坐标) |
semilogy | 创建半对数图(对数纵坐标) |
stairs | 创建阶梯图 |
stem | 创建针状图 |
MATLAB M-Files:
matlab是一个功能强大的编程语言及交互式计算环境,所以matlab依旧允许写入到一个文件里的一系列命令和执行文件的完整单元,就好比写一个函数,然后调用它。
首先,我们先了解一下matlab中的m文件有两种类型:
MATLAB的M文件:
- 脚本 - 脚本文件.m 扩展程序文件。在这些文件中写的一系列命令,想一起执行。脚本不接受输入和不返回任何输出。他们在工作区中的数据操作。
- 函数 - 函数文件 .m 扩展程序文件。函数可以接受输入和返回输出。内部变量是本地的函数。
.m 文件不一定要使用 MATLAB 编辑器创建,其他任何的文本编辑器也是可以的。在本节中,我们将讨论的脚本文件。MATLAB 命令和函数调用的脚本文件包含多个连续的行。可以运行一个脚本,在命令行中键入其名称。
如果使用的是IDE,选择 NEW(新建) -> Script(脚本)。这能打开编辑器,并创建一个文件名为命名。输入代码后可以命名并保存文件。(matlab可执行扩展文件一定是以.m结尾)
实验:在脚本中输入下面代码,让后点击运行NoOfStudents = 6000;
TeachingStaff = 150;
NonTeachingStaff = 20;
Total = NoOfStudents + TeachingStaff ...
+ NonTeachingStaff;
disp(Total);
实验2:创建另外一个脚本,输入下面代码并且运行
a = 5; b = 7;c = a + bd = c + sin(b)e = 5 * df = exp(-d)
MATLAB数据类型
默认情况下,matlab数值变量为双精度浮点值。其他数据类型储存文本,整数或单精度值或单个变量中相关数据的组合。(先暂时直到前面即可,至于上面是浮点数自行百度一下)。
当然,在不默认也就是声明的情况下,matlab提供了15种数据类型,分别是8种整型数据、单精度浮点型、双精度浮点型、逻辑型、字符串型、单元数组、结构体类型和函数句柄。每种数据类型存储矩阵或数组形式的数据。矩阵或数组的最小值是0
到0
,并且是可以到任何大小的矩阵或数组。
先展示其中一小部分:
数据类型 | 描述 |
---|---|
int8 | 8 位有符号整数 |
uint8 | 8 位无符号整数 |
int16 | 16 位有符号整数 |
uint16 | 16 位无符号整数 |
int32 | 32 位有符号整数 |
uint32 | 32 位无符号整数 |
int64 | 64 位有符号整数 |
uint64 | 64 位无符号整数 |
single | 单精度数值数据 |
double | 双精度数值数据 |
logical | 逻辑值为1 或0 ,分别代表true 和false |
char | 字符数据(字符串作为字符向量存储) |
实验:在脚本键入以下代码并执行(如果没有分号,那命令行窗口就会打印出结果)
str = 'Hello World!'
n = 2345
d = double(n)
un = uint32(789.50)
rn = 5678.92347
c = int32(rn)
注意,调用脚本有两种方式,第一种是直接脚本点运行,第二中是在命令行窗口键入脚本名字会自动运行脚本。
数据类型转换
matlab提供了许多数据类型转换的函数,以下举例一部分即可:
函数 | 描述说明 |
---|---|
char | 转换为字符数组(字符串) |
int2str | 将整数数据转换为字符串 |
mat2str | 将矩阵转换为字符串 |
num2str | 将数字转换为字符串 |
str2double | 将字符串转换为双精度值 |
str2num | 将字符串转换为数字 |
查看以下变量的类型及输出结果(查看变量类型用class)
sl = "123hh";
s2 = 132;
s3 = [1 4 3;2 5 6];
s4 = "11.04pp";
s5 = str2num(s1);
s6 = str2double(s1);
s7 = str2num(s4);
s8 = str2double(s4);
s9 = int2str(s2);
s_1 = mat2str(s3);
当然,matlab其实还有很多数据类型确定的函数,你们可以下去查询,这里就不一一举例了。
MATLAB运算符
接下来是运算符,分别有:
-
算术运算符
-
逻辑运算符
-
关系运算符
-
位运算
-
集合运算
算数运算符在之前已经讲过了,也就是加减乘除等运算符,所谓逻辑运算符就是and(&&),or(||),not(~).
尝试一下下面这段代码.
a = 5;b = 20;
if ( a && b )
disp('Line 1 - Condition is true');
end
if ( a || b )
disp('Line 2 - Condition is true');
end
% lets change the value of a and b a = 0; b = 10;
if ( a && b )
disp('Line 3 - Condition is true');
else
disp('Line 3 - Condition is not true');
end
if (~(a && b))
disp('Line 4 - Condition is true');
end
至于关系运算符就是指
操作符 | 描述 |
---|---|
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
== | 等于 |
~= | 不等于 |
这就不举例了,当然MATLAB提供下列命令/函数用于同样的目的:
函数 | 描述 |
---|---|
eq(a, b) | 测试a是否等于b |
ge(a, b) | 测试是否大于或等于B |
gt(a, b) | 测试a是否大于b |
le(a, b) | 测试a是否小于或等于b |
lt(a, b) | 测试a是否小于b |
ne(a, b) | 测试a是否不等于b |
isequal | 测试数组以获得相等性 |
isequaln | 测试数组相等,将NaN值视为相等 |
接下来是位运算
所谓位运算是对数据的二进制进行操作,这个可以详细了解以下计算机的二进制编码.
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
假设如果A= 60,B =13,他们现在以二进制格式将如下:
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
最后一个便是集合操作符了,
函数 | 描述 |
---|---|
intersect(A,B) | 设置两个数组的交集;返回A和B所共有的值。返回的值按排序顺序排列。 |
intersect(A,B,‘rows’) | 将A和B的每一行作为单个实体处理,并返回A和B的公共行。返回的矩阵的行按排序顺序排列。 |
ismember(A,B) | 返回与A大小相同的数组,包含1(true),其中A的元素在其他地方的B中找到,它返回0(false)。 |
ismember(A,B,‘rows’) | 将A和B的每一行作为单个实体处理,并返回一个包含1(true)的向量,其中矩阵A的行也是B的行;否则,它返回0(false)。 |
issorted(A) | 如果A的元素按排序顺序返回逻辑1(true),否则返回逻辑0(false)。输入A可以是向量,也可以是N-by-1或1-by-N的字符串数组。如果A和sort(A)的输出相等,则A被认为是排序的。 |
issorted(A, ‘rows’) | 如果二维矩阵A的行按排序顺序返回逻辑1(真),否则返回逻辑0(假)。 如果A和排序(A)的输出相等,则认为矩阵A被排序。 |
setdiff(A,B) | 设置两个数组的差值;返回不在B中的值。返回数组中的值按排序顺序排列。 |
setdiff(A,B,‘rows’) | 将每一行A和B行作为单个实体处理,并返回一个不在B中的行。返回的矩阵的行按排序顺序排列。“行”选项不支持单元格数组。 |
setxor | 设置两个数组的异或 |
union | 设置两个数组的并集 |
unique | 数组中唯一的值 |
在MATLAB中建立一个脚本文件,并键入下面的代码:
a = [7 23 14 15 9 12 8 24 35]
b = [ 2 5 7 8 14 16 25 35 27]
u = union(a, b)
i = intersect(a, b)
s = setdiff(a, b)
MATLAB算术运算
matlab算数运算包括算数运算符和算数运算函数,算数运算符我就不做赘述了,下面举例一些算数运算函数
函数 | 描述 |
---|---|
uplus(a) | 一元加号;增加量a |
plus (a,b) | 相加;返回 a + b |
uminus(a) | 一元减号;减少a |
minus(a, b) | 相减;返回 a - b |
times(a, b) | 数组相乘;返回 a.*b |
mtimes(a, b) | 矩阵相乘;返回 a* b |
rdivide(a, b) | 右阵划分;返回 a ./ b |
ldivide(a, b) | 左阵划分;返回 a. b |
mrdivide(A, B) | 求解线性方程组xA = B for x |
mldivide(A, B) | 求解线性方程组xA = B for x |
power(a, b) | 数组求幂;返回 a.^b |
mpower(a, b) | 矩阵求幂;返回 a ^ b |
cumprod(A) | 累积乘积;返回与包含累积乘积的数组A相同大小的数组。如果A是向量,则cumprod(A)返回一个包含A的元素的累积乘积的向量。如果A是矩阵,则cumprod(A)返回一个矩阵,其中包含A的每一列的累积乘积。如果A是一个多维数组,那么cumprod(A)将沿着第一个非正整数维。 |
cumprod(A, dim) | 沿维 dim 返回返回累积乘积。 |
cumsum(A) | 累加总和;返回包含累积和的数组A如果A是向量,则cumsum(A)返回一个包含A的元素的累积和的向量。如果A是矩阵,则cumsum(A)返回一个矩阵,其中包含A的每列的累积和。如果A是一个多维数组,那么cumsum(A)将沿着第一个非整数维度起作用。 |
cumsum(A, dim) | 返回沿着dim的元素的累积和。 |
diff(X) | 差分和近似导数;计算x相邻元素之间的差异。如果X是向量,则diff(X)返回相邻元素之间的差异的向量,比X短一个元素:[X(2)-X(1)X(3)-X(2)… X(N)-X(N-1)]如果X是一个矩阵,则diff(X)返回行差的矩阵:[X(2:m,…)-X(1:m-1,: )] |
diff(X,n) | 递归应用n次,导致第n个差异。 |
diff(X,n,dim) | 它是沿标量dim指定的维数计算的第n个差分函数。 如果order n等于或超过Dim的长度,diff将返回一个空数组。 |
prod(A) | 数组元素的乘积;返回A数组元素的乘积。如果A是向量,则prod(A)返回元素的乘积。如果A是非空矩阵,则prod(A)将A的列作为向量,并返回每列乘积的行向量。如果A是一个空的0-by-0矩阵,则prod(A)返回1。如果A是一个多维数组,那么prod(A)将沿着第一个非子集维度行为并返回一个乘积数组。 该维数的尺寸减小到1,而所有其他维数的尺寸保持不变。如果输入A为单个,则prod函数计算并返回B为单个;对于所有其他数字和逻辑数据类型,prod函数计算并返回B为double。 |
prod(A,dim) | 沿dim维度返回乘积。 例如,如果A是矩阵,则prod(A,2)是包含每一行的乘积的列向量。 |
prod(___,datatype) | 在数据类型指定的类中乘以并返回一个数组。 |
sum(A) | 数组元素的总和;返回数组的不同维度的和。如果A是浮动的,那么是双倍或单个,B是本地累加的,它与A相同,B与A具有相同的类。如果A不是浮动的,则B被累加为双,B具有类double。如果A是向量,则sum(A)返回元素的总和。如果A是矩阵,则sum(A)将A的列作为向量,返回每列的和的行向量。如果A是一个多维数组,sum(A)将沿着第一个非单例维度的值作为向量来处理,返回一个行向量的数组。 |
sum(A,dim) | 沿标量A的维度求和。 |
sum(…, ‘double’)sum(…, dim,‘double’) | 执行双精度加法,并返回double类型的答案,即使A具有数据类型单一或整型数据类型。这是整型数据类型的默认值。 |
sum(…, ‘native’)sum(…, dim,‘native’) | 在本机数据类型A中执行添加,并返回相同数据类型的答案。 这是单和双的默认值。 |
ceil(A) | 向正无穷方向舍入;将a元素舍入为大于或等于A的最近整数。 |
fix(A) | 舍入为零 |
floor(A) | 向负无穷方向舍入;将a元素舍入为小于或等于a的最近整数。 |
idivide(a, b)idivide(a, b,‘fix’) | 整数除法的舍入选项;与A./B相同,只是分数的商向零舍入到最接近的整数。 |
idivide(a, b, ‘round’) | 分数的商舍入到最近的整数。 |
idivide(A, B, ‘floor’) | 分数商向负无穷大舍入到最接近的整数。 |
idivide(A, B, ‘ceil’) | 分数商向无穷大舍入到最接近的整数。 |
mod (X,Y) | 除法后的模数;返回X - n.* Y,其中 n = floor(X./Y)。 如果Y不是整数,并且商X / Y在整数的舍入误差内,则n是整数。 输入X和Y必须是相同大小的真实数组或实数标量(提供Y〜= 0)。请注意:mod(X,0) 是 Xmod(X,X) 是 0对于 X = Y 和 Y = 0的 mod(X,Y)具有与Y相同的符号。 |
rem (X,Y) | 除法之后的余数;返回X - n.* Y,其中n = fix(X./Y)。 如果Y不是整数,并且商X / Y在整数的舍入误差内,则n是整数。 输入X和Y必须是相同大小的真实数组或实数标量(提供Y〜= 0)。请记住:rem(X,0) 是 NaNX〜= 0的rem(X,X)为0对于 X~=Y 和 Y~=0 的rem(X,Y)与X具有相同的符号。 |
round(X) | 舍入到最接近的整数; 将X的元素舍入到最接近的整数。 正数元素的小数部分为0.5,最大到最接近的正整数。 负数元素的小数部分为-0.5,向下舍入到最接近的负整数。 |
其中最常用的是diff,sum,ceil,fix,floor,mod,round等函数.
MATLAB各种流程语句语法
1、分支流程if语句语法
if 条件
执行语句
end
判断a是否为0如果a=0则输出a。
if a==0 %思考一下==和===有什么区别
disp(a);
end
2、多分支流程if……elseif……else……end
if 条件1
执行语句1
elseif 条件2
执行语句2
else
执行语句
3end
判断a和b的大小关系,输出大的那个,如果两数相等则输出“相等”。
if a>b
disp(a);
elseif b>a
disp(b);
else
disp("相等");
end
3、多分支流程2-switch语句
switch(被测数据)
case 数据1
执行语句1
case 数据2
执行语句2
case 数据3
执行语句3
...
otherwise
执行语句n
end
输入一个月份,判断该月是那个季节,123春依次类推
k = input("请输入月份")int(k/4);
switch(k)
case 1
disp("春天");
case 2
disp("夏天");
case 3
disp("秋天");
case 4
disp("冬天");
otherwise
disp("没有这个月份");
end
MATLAB循环语句
MATLAB while循环语句
while 循环条件
循环语句
end
实验,打印出1:20的和
int i = 1,n=0;
while i <=20
n = n+i;
end
disp(n);
事实上,对于上面这个问题还有更为简便的方法
a = [1:20];
disp(sum(a));
循环语句最为主要的功能是多次执行同样或者同规律的代码。
MATLAB for循环语句
for 循环元素 = 循环元素可遍历向量或数组
执行语句;
...
end
上面不太好理解,我们看一下下面的示例:
%输出1加到100的和
sum = 0;
for i=1:100
sum = sum+i;
end
disp(sum);
事实上,上面等价于
sum = 0;
for i=1:1:100
sum = sum+i;
end
disp(sum);
如果将问题改为输出1到100的奇数和:
sum = 0;
for i=1:2:100
sum = sum+i;
end
disp(sum);
然而对于上面有两个需要特别注意的问题,sum在matlab中是一个求和函数,所以尽量不要用sum作变量名,同样的,i也是一个特殊的存在,它代表虚数单位,但上面中i的存在周期只有一个for循环,所以影响不大,但也需要特别注意。
MTATLAB循环嵌套和选择嵌套以及混合嵌套
在 MATLAB 中嵌套 for 循环语句的语法如下:
for m = 1:t
for n = 1:k
执行语句;
end
end
例如:
%输出有序数对(i,j),其中i,j均大于0,i<10,j<7的所有可能组合
for m = 1:9
for n = 1:6
fprintf("(%d,%d)\n",m,n);
end
end
%fprintf可以通过help了解用法,其中%d代表输出数据为int类型,其他是输出格式,\n代表转行,输出转行
在 MATLAB 中嵌套 while 循环语句的语法如下:
while 循环条件
while 循环条件
执行语句;
end
end
实验一下:
%给定一个十进制正整数n,写下从1到n的所有整数,然后数一下其中出现的数字“1”的个数。
%例如当n=2时,写下1,2。这样只出现了1个“1”;当n=12时,写下1,2,3,4,5,6,7,8,9,10,11,12。这样出现了5个“1”。
%!!!这道题可能偏难,但希望能够努力完成。
在 MATLAB 中嵌套 if选择语句的语法如下:
if 判断条件
if 判断条件
执行语句
else
执行语句
end
end
例如:
%公历纪年法中,能被4整除的大多是闰年,但能被100整除而不能被400整除的年份不是闰年,
%能被3200整除的也不是闰年,如1900年是平年,2000年是闰年,3200年不是闰年。
%输入a,如果公元a年是闰年输出Y,否则输出N
a = input("请输入判断年份");
if a/4 == int32(a/4)%思考一下为什么是这个判断条件,除了这样之外还能怎么判断
if a/400 == int32(a/400)
disp('Y');
elseif a/100 == int32(a/100)
disp('N');
else
disp('Y');
end
else
disp('N');
end
作业:
通过上面短暂的学习,希望大家自主学习并解决一下问题
1、写一个脚本,通过input读入三个数,
完成计算器简单功能,第一个数代表运算符号,
其中1代表加号,2代表减号,
3代表乘号,4代表除号,
5代表乘方,第二三个数是运算数据,
例如:
输入:1 2 3
输出2+3=5
输入:2 7 9
输出7-9=-2
输入:5 2 3
输出2^3=8