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