3.1 变量赋值和变量类型
who可以输出已经有的变量
whos可以输出变量的大小(1*1)、比特(空间)、数据类型
清除选定的3个变量命令:clear a b mynum
double是64个比特,存储2的64次方个浮点数(有小数点的数),支持15-16位的小数,双精度
single是32个比特,存储小数7-8位,单精度
>>format long %显示最长的精度 >>pi ans = 3.141592653589793 >> pi_double=pi pi_double = 3.141592653589793 >> pi_single=single(pi) %单精度输出 pi_single = single %当double是没显示是因为matlab默认浮点数以双精度存储 3.1415927 >>integer_14_int8=int8(14)%整数变量存储为14,在int8这个形式 integer_14_int8 = int8%形式是int8 14%值是14 >> integer_14_int16=int16(14) integer_14_int16 = int16 14 >> intmax('int8') ans = int8 127%int8中能赋予的最大值是127,2的7次方-1 >> intmin('int8') ans = int8 -128%int8中能赋予的最小值是-128,2的7次方的负数 >> intmax('int16') ans = int16 32767%2的15次方-1 >> intmin('int16')%int16会有16位比特存储数字,1位比特存储正负号,15位存储数的绝对值 ans = int16 -32768 >> intmin('uint8')%unsigned即不带符号的 ans = uint8 0 >> intmax('uint8')% ans = uint8 255
(能用到的几乎所有的数据类型)
>> Apple_char='Apple'%让Apple以字符的形式存储在Apple_char中 Apple_char = 'Apple' >> Apple_string="Apple"%让Apple以字符串的形式存储在Apple_string中 Apple_string = "Apple" >> whos Name Size Bytes Class Attributes Apple_char 1x5 10 char Apple_string 1x1 158 string ans 1x5 10 char >> char('Apple') ans = 'Apple' >> double('Apple') ans = 65 112 112 108 101 >> logical_true=true%逻辑数据类型 logical_true = logical 1 >> logical_false=false logical_false = logical 0 >> whos Name Size Bytes Class Attributes logical_false 1x1 1 logical logical_true 1x1 1 logical
3.2 运算优先级和内部函数
>> iter=10 iter = 10 >> iter=sqrt(iter+1)%sqrt是'square root'开平方根 iter = 3.316624790355400 >> format compact%使用后,空行就没了 >> iter=sqrt(iter+1)%sqrt是'square root'开平方根 iter = 1.754322906758696
3e8是3乘以10的8次方 e可以是E,D,d
format四种用法
format long是小数点最长
format short 输出四位小数
format compact是去除多余空行
format loose 空行回来,输出结果松散
abs(-5)输出5,是绝对值的意思
>> help elfun% 函数帮助 Elementary math functions.
3.3 常数和随机数
尽量不要设置以函数名为名的变量,会引起错误
i和j是虚数,但是经常用作循环的变量,这时,它们作为虚数的功能就消失了
>> i ans = 0.000000000000000 + 1.000000000000000i >> 2+3i ans = 2.000000000000000 + 3.000000000000000i >> i^2 ans = -1 >> 1i ans = 0.000000000000000 + 1.000000000000000i %% 正无穷负无穷 >> Inf ans = Inf >> Inf_double=Inf Inf_double = Inf >> -Inf ans = -Inf >> 1/0 %正无穷 ans = Inf %% >> NaN %not a number ans = NaN >> 0/0 ans = NaN >> nan_double=NaN nan_double = NaN >> whos Name Size Bytes Class Attributes Inf_double 1x1 8 double nan_double 1x1 8 double
随机数rand()、randn、randi
>> rng(1)%rng='rand.num.generator'随机数生成器,让种子是1 >> rand ans = 0.417022004702574 >> rand ans = 0.720324493442158 >> rand ans = 1.143748173448866e-04 >> rng('shuffle')%产生随机数列,是一个不会重复的随即因子.用时间作为随即因子的,不会重复 >> rand ans = 0.213360561985271 >> rand ans = 0.927070783266033 >> rand()*2 %产生0-2之间的随机数 ans = 1.292064407270423 >> randn %n=normal distribution 产生正态分布的随机数,均值是0,方差是1 ans = 0.966668170039448 >> randi(12) %1-12的数 ans = 1 >> randi(12) %1-12的数 ans = 8 >> randi([4,12])%4-12的随机整数 ans = 5 %%练习题 >> 100*rand %产生0-100的随机数 ans = 99.649233861273217 >> 15*rand+20 %产生20-35的随机数 ans = 25.035596686977584 >> randi([1,100]) %产生1-100的随机整数 ans = 49 >> randi([20,35]) %产生20-35的随机整数 ans = 34 %%字符的代码 >> double('a') ans = 97 >> double('b') ans = 98 >> char(97) %将97的代码转化成字符 ans = 'a' >> char(1:128) %会出现所有的字符 ans = '•••••• •• •••••••••••••••••• !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~••'
3.4 逻辑运算+字体设置
>> 3<5%逻辑变量1,是正确的 ans = logical 1 >> 3>5 ans = logical 0 >> true ans = logical 1 >> false ans = logical 0 >> xor(3<5,1<3) %当且仅当括号里的有一个正确的时候返回1,否则是0 ans = logical 0 >> xor(3<5,1>3) ans = logical 1 >> 'b'<'a'+1 ans = logical 0 >> 'b'=='a'+1 ans = logical 1 >> 10>5>2 ans = logical 0 >> 10>5&&5>2 ans = logical 1
~=是不等于,==是等于,&&是且的意思,||是或的意思。~(3<1)是先算括号再否定,返回结果是1
单个的&和|针对向量和数组而言的
优先级