matlab考前预习
1-2
//函数文件的基本构造:
function 输出形参表 = 函数名(输入形参表)
注释说明部分
函数体语句
// 函数调用
一般格式:
【输出形参表】= 函数名(输入实参表)
例1:
编写函数文件,求半径为r的圆的面积和周长
function [s,p]=fcircle(r)
s=pi*r*r;
p=2*pi*r;
例2:
求n的阶乘
function f=factor(n)
if(n<=1)
f=1;
else
f=factor(n-1)*n;
end
例3:
nargin用法
nargin 记录调用该函数时的输入实参个数
nargout 输出实参的个数
函数文件 examp.m:
function fout=examp(a,b,c)
if nargin==1
fout=a;
elseif nargin==2
fout=a_b;
elseif nargin==3
fout=(a*b*c)/2
end
命令文件 mydemo.m:
x=[1:3];
y=[1;2;3];
examp(x)
examp(x,y')
examp(x,y,3)
全局变量使用方法
function f=wadd(x,y)
global ALPHA BETA
f=ALPHA*x+BETA*y;
1-3
特殊变量表:
ans 用于结果的缺省变量名
pi 圆周率
eps 计算机的最小数
flops 浮点运算数
Inf 无穷大
NaN 不定量
i,j i^2=j^2=-1
nargin 所有函数的输入变量数目
nargout 所有函数的输出变量数目
realmin 最小可用正实数
realmax 最大可用正实数
常用函数:
abs(x) 绝对值或负数的辐值
acos(x)反余弦
acosh(x)反双曲余弦
angle(x) 四象限内去负数相角
asin(x)反正弦
asinh(x)反双曲正弦
atan(x) 反正切
atan2(x,y)四象限内反正切
atanh(x)反双曲正切
ceil(x) 向上取整
floor(x)向下取整
fix(x)对0方向取整数
gcd(x,y)
imag(x) 复数虚部
real(x)复数实部
rem(n,21)n%21 的余数
lcm(x,y)
log(x)自然对数
log10(x) 常用对数
max(x)最大值函数
min(x)最小值函数
rem(x,y)余数
sec(x)正割函数
随机抽取10名学生的成绩,取平均值,取最高分,最低分
math = [88,90,77,69,92,80,74,66,95,85];
aver = sum(math)/10
h=max(math)
l=min(math)
format long 16位
format short e 5位加指数
format long e 16位加指数
format hex 十六进制
format bank 两个十进制位
format + 正,负,或零
format rat 有理数近似
format short 缺省显示
矩阵的建立
以m*n的矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。
zeros 产生全0的矩阵。
ones 产生全1的矩阵
eye 产生单位矩阵
rand 产生0~1 间均匀分布的随机矩阵
randn 产生均值为0,方差为1的标准正态分部矩阵
triu 上三角矩阵
tril 下三角矩阵
在区间[20,50]内均匀分布的5阶随机矩阵: x= 20+(50-20)*rand(5)
均值为0.6,方差为0.1的5阶正态分布随机矩阵 : y = 0.6 +sqrt(0.1)*randn(5)
reshape (A,m,n)在矩阵总元素保持不变的前提下,将矩阵A重新排成m*n的二维矩阵。
魔方矩阵:每行每列,两条对角线的和都相等。
M=magic(5)
矩阵的旋转 fliplr(A)
矩阵的伪逆pinv(A)
矩阵的范数 norm(V)
字符串是用单撇号括起来的字符序列,将字符串当做一个行向量,每个元素对应一个字符。
建立一个字符串向量,然后对该向量做如下处理:
ch='Abcxsafdjawseidfhawsed'
subch = ch(1:5)取子字符串
revch = ch(end:-1:1) 将字符串倒排
k= find(ch>='a'&&ch<='z')找小写字母的位置
ch(k)=ch(k)-('a'-'A') 将小写字母变成相应的大写字母
char(ch)
length(k) 统计小写字母的个数
eval(t)把字符串的内容作为对应的matlab语句来执行
if...
disp()
elseif ...
disp()
ex 1.3.21
y=0;
n=100;
for i =1:n
y=y+1/(2*i-1);
end
y
求[100,200]之间第一个能被21整除的整数
for n= 100:200
if(rem(n,21)~=0)continue;
end
break
end
n