第三课 matlab 数值数据
matlab 的数值类型比较丰富,有数值型、字符串型、结构、单元等。
一、数值类型的分类
matlab 数值类型包括整型、浮点型、复数型。系统给不同的数据类型分配了不同大小的内存单元。 因此数据的表示范围就确定了。
整型
-
无符号整数:
无符号8位整数(范围:0~ 2 8 2^8 28-1)
无符号16位整数(范围:0~ 2 16 2^{16} 216-1)
无符号32位整数(范围:0~ 2 32 2^{32} 232-1)
无符号64位整数(范围:0~ 2 64 2^{64} 264-1)
-
带符号整数:
带符号8位整数(范围: − 2 7 -2^{7} −27~ 2 7 2^{7} 27-1)
带符号16位整数(范围: − 2 15 -2^{15} −215~ 2 15 2^{15} 215-1)
带符号32位整数(范围: − 2 31 -2^{31} −231~ 2 31 2^{31} 231-1)
带符号64位整数(范围: − 2 63 -2^{63} −263~ 2 63 2^{63} 263-1)
注意:当数值超过该数据类型最大值时,用最大值表示:
x=int8(129)
x =
int8
127
浮点型
浮点型数据分为单精度型和双精度类型,单精度型实数在内存中占用4个字节,而双精度型实数在内存中占用8个字节,所以双精度型的数据精度更高。
在 matlab 中,数据默认为双精度类型。
class(4)
ans =
double
可以使用 single
函数,将其他类型的数据转换为单精度型.。
>> class(single(4))
ans =
single
使用 double
函数,将其他类型的数据转换为双精度型。
>> class(double(4))
ans =
double
复数型
复型数据包括实部和虚部两个部分,实部和虚部默认为双精度型,虚数单位用 i
或 I
来表示。
>> 6+5i
ans =
6.0000 + 5.0000i
real
函数:
求复数的实部
>> real(6+5i)
ans =
6
imag
函数:
求复数的虚部
>> imag(6+5i)
ans =
5
数据的输出格式
format
命令的格式:
format 格式符
例如:
>> format long
>> 1/3
ans =
0.333333333333333
注意:
- format 命令的默认格式是 shorshort
- format 命令只影响数据输出格式,而不影响数据的计算和存储。
二、 常用的数学函数
函数调用格式
函数名(函数自变量的值)
函数定义
函数的自变量规定为矩阵变量,当然也可以是标量,标量本身是矩阵的一种特例。
函数在运算时是将函数逐项作用于矩阵的每个元素上所以最后运算的结果就是一个与自变量同型的矩阵。
例子
>> A=[4,2;3,6]
A =
4 2
3 6
>> B=exp(A)
B =
54.5982 7.3891
20.0855 403.4288
常用的数学函数的应用
-
三角函数有以弧度为单位的函数和以角度为单位的函数,如果是以角度为单位的函数就在函数名后面加
d
,以示区别。>> sin(pi/2) ans = 1 >> sind(90) ans = 1
-
abs 函数可以求实数的绝对值、复数的模、字符串的 ASCII 码值。
>> abs(-4) ans = 4 >> abs(3+4i) ans = 5 >> abs('a') ans = 97
-
用于取整的函数有fix、floor、ceil、round。
round 函数按照四舍五入的规则取整。
>> round(6.4) ans = 6 >> round(6.5) ans = 7
ceil 函数是向上取整,取大于等于这个数的第一个整数。
>> ceil(-6.6) ans = -6 >> ceil(6.6) ans = 7
floor 函数是向下取整,取小于等于这个数的第一个整数。
>> floor(6.6) ans = 6 >> floor(-6.6) ans = -7
fix 函数是固定取靠近 0 的那个整数,即舍去小数取整。
>> fix(6.6) ans = 6 >> fix(-6.6) ans = -6
常用函数的应用例子
-
分别求一个三位正整数的个位数字、十位数字和百位数字。
解题思路:
一个三位正整数除以10的余数就是该数的个位数字。
一个三位正整数除以10取整后就去掉了这个数的个位数字,将新得到的数再除以10取余数,余数就是新得到的数的个位数字,也就是原数的十位数字。
一个三位正整数除以100取整后就去掉了这个数的个位数字和十位数字,得到百位数字。
>> m=123 m = 123 >> m1=rem(m,10) m1 = 3 >> m2=rem(fix(m/10),10) m2 = 2 >> m3=fix(m/100) m3 = 1
-
求[1,100]区间的所有素数
MATLAB提供了一个判断n是否素数的函数isprime(n),当n是素数时返回1,否则返回0。
>> a=1:100; >> k=isprime(a); >> k1=find(k); >> y=a(k1) y = 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
1
* 求[1,100]区间的所有素数
MATLAB提供了一个判断n是否素数的函数isprime(n),当n是素数时返回1,否则返回0。
a=1:100;
k=isprime(a);
k1=find(k);
y=a(k1)
y =
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97