循环程序结构设计matlab,matlab程序设计

1.符号运算

1.1创建符号对象

sym()

syms()

其中syms()可以创建多个对象

a=1/4;

b='1/4';

c=sym(1/4);

d=sym('1/4');

classa=class(a)

classb=class(b)

classc=class(c)

classd=class(d)

classa =

double

classb =

char

classc =

sym

classd =

sym

1.2 例子

计算积分

syms A t tao w

yf=int(A*exp(-i*w*t),t,-tao/2,tao/2)

>>

(2*A*sin((tao*w)/2))/w

计算矩阵行列式值,特征值,特征根

det() :计算行列式

inv() : 计算特征值

eig() : 计算特征根

syms a11 a12 a21 a22

A=[a11,a12;a21,a22]

DA=det(A)

IA=inv(A)

EA=eig(A)

>>

DA =

a11*a22 - a12*a21

IA =

[ a22/(a11*a22 - a12*a21), -a12/(a11*a22 - a12*a21)]

[ -a21/(a11*a22 - a12*a21), a11/(a11*a22 - a12*a21)]

EA =

a11/2 + a22/2 - (a11^2 - 2*a11*a22 + a22^2 + 4*a12*a21)^(1/2)/2

a11/2 + a22/2 + (a11^2 - 2*a11*a22 + a22^2 + 4*a12*a21)^(1/2)/2

化简与展开

simpilify()

syms fai1 fai2

y=simplify(sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2))

>>

y =

sin(fai1 - fai2)

y=sym('(x+1)^3')

y=expand(y)

>>

y =

x^3 + 3*x^2 + 3*x + 1

因式分解

factor()

syms a x

f1=x^4-5*x^3+5*x^2+5*x-6;factor(f1)

f2=x^2-a^2;factor(f2)

factor(1025)

>>

ans =

[ x - 1, x - 2, x - 3, x + 1]

ans =

[ -1, a - x, a + x]

ans =

5 5 41

2. 分支结构

2.1if分支

clear

a=100;

b=20;

if a

fprintf ('b>a') % 在Word中输入’b>a’单引号不可用,要在Editor中输入

else

fprintf ('a>b') % 在Word中输入’b>a’单引号不可用,要在Editor中输入

end

2.2 switch分支

clear

n=input('输入n='); % 输入n值

switch mod(n,5) % mod是求余函数,余数为0,得0,余数不为0,得1

case 0

fprintf ('%d是5的倍数',n)

otherwise

fprintf('%d不是5的倍数',n)

end

3.循环语句

3.1 while循环

clear

x=0; % 初始化变量x

sum=0; % 初始化sum变量

while x<101 % 当x<101执行循环体语句

sum=sum+x; % 进行累加

x=x+2;

end % while结构的终点

sum % 显示sum

>>

2550

3.2 for循环

语法规则如下:

for ii = 初值:增值:终值

语句一

语句二

end

clear

sum=0; % 设置初值(必须要有)

for ii=1:100; % for循环,增量为1

sum=sum+ii;

end

sum

%end % 程序结束

还有其他的continue,break语句与c语言类似,而input()的用法与python类似。

此外c语言中的”!“在matlab中用”~“

4.函数

在matlab中对于自带的函数可以直接调用,若是自写函数,如冒泡排序算法

新建脚本后,保存为BubbleSort.m,注意文件名要与函数名一致

function s=BubbleSort(x)

% 冒泡排序,x为待排序数组

n=length(x);

for i=1:n-1 % 最多做n-1趟排序

flag=0; % flag为交换标志,本趟排序开始前,交换标志应为假

for j=1:n-i % 每次从前向后扫描,j从1到 n-i

if x(j)>x(j+1) % 如果前项大于后项则进行交换

t=x(j+1);

x(j+1)=x(j);

x(j)=t;

flag=1; % 当发生了交换,将交换标志置为真

end

end

在调用的时候,只用新建脚本(与函数文件在同一路径下),即可直接调用

x = rand(1,10)

y = BubbleSort(x)

>>

1 至 9 列

0.0292 0.0855 0.2373 0.2625 0.4588 0.4886 0.5785 0.7303 0.8010

10 列

0.9289

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值