搜档网
当前位置:搜档网 › matlab经典例题

matlab经典例题

matlab经典例题
matlab经典例题

4 编写函数文件f17.m实现求一个向量所有元素的和(不能用sum)。再编写一个测试脚本t17.m,随机生成一个4行5列的矩阵A,调用f17求A每列的和

function sum=f17(A)

a=0;

b=size(A);

for i=1:b(2)

a=a+A(i);

end

sum=a;

A=rand(4,5)

sum=[];

for j=1:5

b=A(1:end,j);

b=b';

m=f17(b);

sum=[sum,m];

end

disp(sum);

2 有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天后可以卖完?编写求出天数的脚本文件.

day=0;

x1=1020;

while(x1>=0)

b=round(x1/2);

x2=x1-(b+2);

x1=x2;

day=day+1;

end

fprintf('%d\n',day);

case {1,3,5,7,8,10,12}

day_of_year = day_of_year + 31;

case {4,6,9,11}

day_of_year= day_of_year + 30;

case 2

day_of_year = day_of_year + 28 + leap_day;

end

end

fprintf('The date %2d/%2d/%4d is day of year %d.\n', month, day, year,

day_of_year);

例2,商场购物,100件以下,不优惠,100~199件95折,200~399件90折,400~799件85折,800~1499件80折,1500件以上,75折。输入所购货物的单价、件数,求实际付款数目。编写脚本文件,用if语句switch语句实现。

%if

clc;

price=input('Input price:'); num=input('Input num:'); if num>=1500

d=0.75;

elseif num>=800

d=0.8;

elseif num>=400

d=0.85;

elseif num>=200

d=0.90;

elseif num>=100

d=0.95;

else

d=1;

end

sum=num*price*d

%switch

clc;

price=input('Input price:'); num=input('Input num:'); sel=fix(num/100);

case 0

d=1;

case 1

d=0.95;

case {2,3}

d=0.90;

case {4,5,6,7}

d=0.85;

case {8,9,10,11,12,13,14}

d=0.80;

otherwise

d=0.75;

end

sum=num*price*d

例3,用1、2、3、4共4个不同的个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

clc;

p=[];

count=0;

for i=1:4

for j=1:4

if i~=j & i~=k & j~=k

n=i*100+j*10+k;

p=[p,n];

count=count+1;

end

end

end

end

disp('互不重复的三位数分别是:');p

disp(['这样的三位数共有',num2str(count),'个'])

例4,有1020个桃子,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天后可以卖完?编写脚本文件求出天数。clc;

day=0;

x1=1020;

while(x1)

x2=x1/2-2;

x1=x2;

day=day+1;

end

day

例5,编写一个函数文件,统计出一有序整形向量a(按升序排列)中不同等值整数组及对应的数据个数。再编写测试脚本测试向量[ 1 1 1 1 2 2 5 5 5 7 7 7 7 7],输出形式为p=[1 2 5 7],n=[4 2 3 5]。function [p,n]=f7(a)

na=length(a);

p=[];

n=[];

j=1;

while j<=na

count=0;

for k=j:na

if a(k)==a(j)

count=count+1;

continue;

end

end

p=[p,a(j)];

n=[n,count];

j=j+count;

end

end

脚本调用

clear;

clc;

a=[ 1 1 1 1 2 2 5 5 5 7 7 7 7 7];

[p,n]=f7(a)

例6,编写函数文件,实现对一个数值向量的元素进行排升序(不能使用函数sort)。再写一个测试脚本调用f9对数组A的每行进行排升序,其中A=fix(rand(5,6)*10+20)。

function y = f9(a)

n=length(a);

for i=1:n-1

for j=1:n-i

if a(j)>a(j+1)

temp=a(j);

a(j)=a(j+1);

a(j+1)=temp;

end

end

end

y=a;

end

clear;

clc;

A=fix(rand(5,6)*10+20);

[n,m]=size(A);

B=zeros(size(A));

for i=1:n

B(i,:)=f9(A(i,:));

end

B

脚本文件和函数文件案例分析

例1 求100以内间隔为2 的素数对。例如3,5为一对,11,13为一对。

%prime.m

function [x]=prime(n)

x=1;

for i=2:n-1

if mod(n,i)==0,break

end

end

if i

end

%prime1.m

for i=2:100

x=prime(i);

y=prime(i+2);

if x==1&y==1

fprintf('%4d%4d\n',i,i+2);

end

end

例2 求1~99中所有完全数。所谓完全数是指该数据出现在它的平方右边。例如5是完全数,25是完全数。

%wanquan.m

k=i^2;

if k<100

if mod(k,10)==i

fprintf('%5d%5d\n',i,k);

end

else

if mod(k,100)==i

fprintf('%5d%5d\n',i,k);

end

end

end

例3 排序问题

function bubsort1(x,n)

for i=1:n-1

for j=1:n-i;

if x(j)>x(j+1)

t=x(j);

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

x(j+1)=t;

end

end

end

for i=1:n

fprintf('%d ',x(i));

end

fprintf('\n');

function bubsort2(x,n)

for i=1:n-1

for j=n:-1:i+1

if x(j)

t=x(j);

x(j)=x(j-1);

x(j-1)=t;

end

end

end

for i=1:n

fprintf('%d ',x(i));

end

function selesort(x,n)

for i=1:n-1

k=i;

for j=i+1:n

if x(k)>x(j),k=j;end

end

t=x(k);

x(k)=x(i);

x(i)=t;

end

for i=1:n

fprintf('%d ',x(i));

end

fprintf('\n');

例4 九九乘法表

%脚本文件

clc

for i=1:9

for j=1:i

fprintf('%d*%d=%-2d ',i,j,i*j);

end

fprintf('\n');

end

%函数文件

function jiujiu1()

for i=1:9

for j=1:i

fprintf('%d*%d=%-2d ',i,j,i*j);

end

fprintf('\n');

end

例5矩阵的最大值及位置

%marxmax.m

function [ma,row,col]=marxmax(x,m,n) row=1;

col=1;

ma=x(1,1);

for i=1:m

for j=1:n

if x(i,j)>ma

row=i;

col=j;

ma=x(i,j);

end

end

end

fprintf('%d %d %d\n',ma,row,col);

例6矩阵的最小值及位置

%marxmin.m

function [mi,row,col]=marxmin(x,m,n)

row=1;

col=1;

mi=x(1,1);

for i=1:m

for j=1:n

if x(i,j)

row=i;

col=j;

mi=x(i,j);

end

end

end

fprintf('%d %d %d\n',mi,row,col);

1 编写一函数文件y=dec_hex(num)、num为十进制正整数、y为对应的十六进制数字符串。%dec_hex.m

function y=dec_hex(num)

fprintf('十进制数:%d对应的十六进制数为:',num);

y=[];

while 1

a=mod(num,16);

switch a

case {0,1,2,3,4,5,6,7,8,9}

y=[num2str(a),y];

case 10

y=['A',y];

case 11

y=['B',y];

case 12

y=['C',y];

case 13

y=['D',y];

case 14

y=['E',y];

case 15

y=['F',y];

end

num=fix(num/16);

if num==0

break;

end

end

fprintf('%s\n',y);

2 有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天后可以卖完?编写求出天数的脚本文件.

day=0;

x1=1020;

while(x1>=0)

b=round(x1/2);

x2=x1-(b+2);

x1=x2;

day=day+1;

end

fprintf('%d\n',day);

3 用1、2、3、4共4个不同的个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?用脚本文件实现。

m=0;

for i=1:4

for j=1:4

for k=1:4

if(i~=j)&(j~=k)&(k~=i)

m=m+1;

fprintf('%d%d%d\n',i,j,k);

end

end

end

end

fprintf('%d\n',m);

4 编写函数文件f17.m实现求一个向量所有元素的和(不能用sum)。再编写一个测试脚本t17.m,随机生成一个4行5列的矩阵A,调用f17求A每列的和

function sum=f17(A) a=0;

b=size(A); for i=1:b(2) a=a+A(i); end

sum=a;

A=rand(4,5) sum=[];

for j=1:5

b=A(1:end,j); b=b';

m=f17(b); sum=[sum,m]; end

disp(sum);

5 输入一系列连续的小写英文字母统计所有不同字母出现的次数。

str=input('输入的姓名为','s');

le=length(str);

str1=str; %str1存放除去重复字符后的字符串

n=0;

for num=1:le

t(num)=0;

end

for i=1:le

for j=1:n+1

if str(i)==str1(j)

break;

end

end

if j

t(j)=t(j)+1;

else

str1(j)=str(i);

t(j)=t(j)+1;

n=n+1;

end

end

for m=1:n

fprintf('字符%c出现了%d次\n',str1(m),t(m));

end

统计一组数字中每种数字的个数,并使统计出的数字升序排列.

function [s,k]=FLTJ_3(x)

% 统计数组 x 中每种数字的个数,将统计出的数字按升序排列

n=length(x);

s1=x(1);

s2=1;

% s1 记录统计出的数字,s2 记录对应数字个数,并为它们

% 分别赋初值为:x 的第 1 个数字,个数为 1

k=1;

% k 记录已统计出的数字个数

for i=2:n %从x 的第2 个元素开始遍历

if x(i)

s2=[1;s2];

k=k+1;

elseif x(i)>s1(k) %若x(i)比s1(k)小,应放在s1(k)后面

s1=[s1;x(i)];

s2=[s2;1];

k=k+1;

else %否则,应在s1 内部查找x(i)或其插入位置

flag=0; %标志变量,标志是否在s1 中找到x(i)

top=1;

bott=k; %查找区间下标

while (flag==0&top<=bott)

mid=fix((bott+top)/2);

if x(i)==s1(mid) %若在 s1 中找到 x(i),

s2(mid)=s2(mid)+1; %让其对应计数器加 1

flag=1; %并置标志变量为真

elseif x(i)

bott=mid-1;

else

top=mid+1;

end

end

if flag==0 %若找到新数字,则此新数应放在 s1(top) 与 % s1(top-1)之间,同时 k 值加 1 s1=[s1(1:bott);x(i);s1(top:k)]; s2=[s2(1:bott);1;s2(top:k)];

k=k+1;

end

end

end

s=[s1,s2];

线性回归函数regress

有12个相邻样本点,人为设定一个原点,测

得其它各点相对于原点的距离x0、某金属含量为y0,如下表:

x0=[2,3,4,5,7,8,10,11,14,15,18,19];

y0=[106.42,109.20,109.58,109.50,110.00,109.93,110.49,

110.59,110.60,110.83,111.00,111.20]';

1.画出散点图观察二者的关系;

2.建立合适的回归模型并求解模型参数;

3.用建立好的模型预测x为1、6、9、12、13、16、17时对应的金属含量。

4.%二次曲线拟合y=b0+b1*x+b2*x.^2

5.%构成x2:第一列全1、第二列x0、第三列x0.^2

6.x2=[ones(12,1),x0,x0.^2];

7.[b bint r rint stats]=regress(y0,x2);

8.%依据返回的b(1),b(2),b(3)获得:y=b(1)+b(2)*x+b(3)*x.^2

9.y2=106.9522+0.5271*x0-0.0170*x0.^2 ;

10.hold on;

11.plot(x0,y2,‘m’);%二次拟合:紫色

12.%双曲线拟合y=b0+b1/x

13.%构成x3:第一列全1、第二例1./x0

14.x3=[ones(12,1),1./x0];

15.[b bint r rint stats]=regress(y0,x3);

16.%依据返回的b(1),b(2)获得:y=b(1)+b(2)./x0

17.y3=111.5853-9.4594./x0;

18.hold on;

19.plot(x0,y3,‘r’);%双曲拟合:红色

20.%根据拟合效果stats特点(参考统计学知识)

21.%选择双曲线模型预测:

22.xnew=[1,6,9,12,13,16,17]';

23.ynew=111.5853-9.4594./xnew;

24.disp('预测:');

25.disp(' xnew ynew');

26.disp([xnew ynew]);

27.hold on;

28.scatter(xnew,ynew,'o');

29.legend('已测点','线性','二次','双曲',...

30.'预测点','Location', 'SouthEast' );

输入学生成绩,输出学生成绩的等级。用if和switch两种方法实现x=input( '成绩=');

k=fix(x/10);

switch k

case 10 , y='A';

case 9, y='A';

case 8, y='B';

case 7, y='c';

case 6, y='d';

otherwise y='e';

end

y

用if语句实现

x=input( '成绩=');

if x>=90,y='A';

elseif x>=80,y='B';

elseif x>=70,y='C';

elseif x>=60,y='D';

else y='E';

end

y

写一段程序,将数组x中可被4整除的数移除。假设x如下给定:x=[-8,0,2,5,7,2,0,0,4,6,6,9]

程序代码为:

%ex3_6.m

x=[-8,0,2,5,7,2,0,0,4,6,6,9];

y=[ ];%定义一空矩阵

for n=1 : length(x)

if x(n)/4-fix(x(n)/4)~=0

y= [ y, x(n) ];%列拼接

end

end

y

用while循环求1~100的和

s=0;

i=1;

while i<=100

s=s+i;

i=i+1;

end

s

求100~200中所有素数

y=[];

for m=100:200

i=2;

while i

if m/i==fix(m/i)

break

end

i=i+1;

end

if i>=m

y=[y m];

end

end

y

求1~100中所有奇数的和(ex3_9.m) ·

s=0;

for m=1:100

if mod(m,2)==0

continue

end

s=s+m;

end

s

编写函数文件SumMax.m求向量X元素之和以及最大值。% SumMax.m 不使用库函数sum及max。

function [s,m]=SumMax(array)

s=0;

m=array(1);

[row,column]=size(array);

if ~(row==1|column==1)

error('array is not a vector\n');

end

if row==1

count=column;

else

count=row;

end

for ii=1:count

s=s+array(ii);

if array(ii)>m

m=array(ii);

end

end

编写函数文件

[ maxgys,mingbs ] = gys_gbs( num1,num2 )

求两数的最大公约数和最小公倍数

function [ maxgys,mingbs ] = gys_gbs( num1,num2 )

if num1

temp=num1;num1=num2;num2=temp;

end

n1=num1;n2=num2;

r=mod(n1,n2);

while r

n1=n2;

n2=r;

r=mod(n1,n2);

end

maxgys=n2;

c=1;

r=mod(c*num1,num2);

while r

c=c+1;

r=mod(c*num1,num2);

end

mingbs=c*num1;

end

编写脚本文件:从键盘输入一正整数,判断其是否为素数。num=input('请输入一个正整数:');

flag=1;%假定是素数

for ii=2:fix(sqrt(num))%只需除到本身开方取整

if mod(num,ii)==0

flag=0;%置非素数标志

break;

end

if flag==1

fprintf('%d为素数\n',num);

else

fprintf('%d不是素数\n',num);

end

在当前工作目录下先编写一函数文件y=is_prime(num);

若num为素数y==1、否则y==0。

再在当前工作目录下编写另一函数文件prime_pair(num1,num2,d);

num1、num2、d均为正整数(num2>num1),prime_pair在command Windows输出num1与num2之间的且相邻两素数之差为d的所有素数对。

%is_prime.m

function y=is_prime(num )

y=1;

for ii=2:fix(sqrt(num))

if mod(num,ii)==0

y=0;

break;

end

end

%prime_pair.m

function prime_pair(num1,num2,d)

count=0;

for ii=num1:num2-d

if is_prime(ii)==1&is_prime(ii+d)==1

fprintf('%d\t%d\n',ii,ii+d);

count=count+1;

end

end

if count==0

disp('没有符合条件的素数对');

end

冒泡排序法

function sort_bubble( array )

n=length(array);

for ii=1:n-1 %作n-1次比较、ii递增

% for jj=n:-1:ii+1 %结果存于首(冒泡);

% if array(jj)>array(jj-1)

% temp=array(jj);

% array(jj)=array(jj-1);

% array(jj-1)=temp;

% end

for jj=1:n-ii %结果存于尾(下沉)

if array(jj)

temp=array(jj);

array(jj)=array(jj+1);

array(jj+1)=temp;

end

end

end

disp(array')

end

定义一个含有年、月、日的结构类型,输入一个日期,求出该日期是该年的第多少天?calendar.year=input('请输入年份:');

calendar.month=input('请输入月份:');

calendar.day=input('请输入日期:');

days=0;

if calendar.month==1

days=calendar.day

else

for i=1:calendar.month-1

switch i

case {1,3,5,7,8,10}

days=days+31;

case {4,6,9,11}

days=days+30;

otherwise

if mod(calendar.year,400)==0 |( mod(calendar.year,4)==0& mod(calendar.year,100))~=0

days=days+29;

else

days=days+28;

end

end

end

end

if calendar.month~=1

days=days+calendar.day;

end

fprintf('%4d.%2d.%2d是该日期的%4d天\n',calendar.year,calendar.month,calendar.day,days);

一个学生数据包含有:学号、姓名、性别、年龄、成绩,输入n(自定)个学生数据,按成绩从高到低重新排列并输出。

matlab考试题及答案

%1、编制一个解数论问题的函数文件:取任意整数,若是偶数,则用2除,否则乘3加1,重复此过程,直到整数变为1。 function f=NO_1(X); Y(1)=X;k=1; while (X~=1) k=k+1; if (mod(X,2)==0) X=X/2; else X=3*X+1; end Y(k)=X; end plot(Y,'b.') end % 2、编制程序产生一个数组,满足:a1=1,a2=1,从第三个元素开始,每个元素等于前两个元素的和,直到数组的前后两个元素的比值比小于1e-4,并且以红色点线的形式画出这个数组。 clear; A(1)=1; A(2)=1; i=3; Z=1; while (abs(Z)>=1e-4) A(i)=A(i-1)+A(i-2); Z=A(i-1)/A(i); i=i+1; end plot (A,'r.') % 3、编写一个函数,能够产生分段函数。function y=test_3_1(X) if (X<=2) y=*X; elseif (X>6) y=; else y=调用分段函数,绘制曲线。 clear; i=1; for j=0::2; x(i)=j;y(i)=test_3_1(j)*test_3_1(j+2); i=i+1; end plot(x,y) % 4、在2pi周期内画正弦函数曲线,并加注坐标轴标识和标题,然后在3pi/4,pi,5pi/4处分别加入带箭头的说明性文本,最后加注图例。 clear; t = 0:pi/50:2*pi; n = length(t); y = sin(t); plot(t,y,'-bo','linewidth',1) xlabel('X');ylabel('Y'); title('正弦函数曲线'); text,, ' \leftarrow 3pi/4','FontSize',18); text,, ' \leftarrow 3pi/4','FontSize',18); text,,' \leftarrow 3pi/4','FontSize',18); hleg1 = legend('sin(x)'); % 5、A为任意一个n*m矩阵,写程序来计算A 中有多少个零元素,并输出个数。 A=input('输入一个矩阵 A = ') n=length(find(A==0)) % 6、A为任意一个向量,写程序找出A中的最小元素,并且输出这个最小元素。 A=input('输入一个向量 A = '); x=length(A); i=1; y=A(i); while (iA(i)) y=A(i); end end disp('最小元素是:') disp(y) % 7、某系统由四个典型环节构成,试根据四阶龙格—库塔公式,求输出量y的阶跃响应,取仿真时间Tf=10s, %步长h=。

matlab基础练习题带答案

Matlab 基础练习题 常量、变量、表达式 1、 MATLAB 中,下面哪些变量名是合法的?( ) (A )_num (B )num_ (C )num- (D )-num 2、 在MA TLAB 中,要给出一个复数z 的模,应该使用( )函数。 (A )mod(z) (B )abs(z) (C )double(z) (D )angle(z) 3、 下面属于MATLAB 的预定义特殊变量的是?( ) (A )eps (B )none (C )zero (D )exp 4、 判断:在MA TLAB 的内存工作区中,存放一个英文字符 'a' 需要占用1个字节,存放 一个中文字符‘啊’需要占用2个字节。( 错,都是2个字节 ) 5、 判断:MA TLAB 中,i 和j ( 对 ) 6、 判断:MA TLAB 中,pi 代表圆周率,它等于3.14。( 错,后面还有很多位小数 ) 7、 在MA TLAB 中,若想计算的5 1)3.0sin(21+= πy 值,那么应该在MA TLAB 的指令窗中 输入的MA TLAB 指令是__y1=2*sin(0.3*pi)/(1+sqrt(5))_。 8、 在MA TLAB 中,a = 1,b = i ,则a 占_8__个字节,b 占_16_个字节,c 占________字 节。 9、 在MA TLAB 中,inf 的含义是__无穷大__,nan 的含义是__非数(结果不定)___。 数组 1、 在MA TLAB 中,X 是一个一维数值数组,现在要把数组X 中的所有元素按原来次序 的逆序排列输出,应该使用下面的( )指令。 (A )X[end:1] (B )X[end:-1:1] (C )X (end:-1:1) (D )X(end:1) 2、 在MA TLAB 中,A 是一个字二维数组,要获取A 的行数和列数,应该使用的MATLAB 的命令是( )。 (A )class(A) (B )sizeof(A) (C )size(A) (D )isa(A) 3、 在MATLAB 中,用指令x=1:9生成数组x 。现在要把x 数组的第二和第七个元素都 赋值为0,应该在指令窗中输入( ) (A )x([2 7])=(0 0) (B )x([2,7])=[0,0] (C )x[(2,7)]=[0 0] (D )x[(2 7)]=(0 0) 4、 在MA TLAB 中,依次执行以下指令:clear;A=ones(3,4); A(:)=[-6:5];这时, 若在指令窗中输入指令b=A(:,2)',那么,MATLAB 输出的结果应该是( ) (A )b = -3 -2 -1 (B )b = -2 -1 0 1 (C )b = -5 -1 3 (D )b = -5 -2 1 4 5、 在MA TLAB 中,A = 1:9,现在执行如下指令L1 = ~(A>5),则MATLAB 的执行结果应 该是L1 =___ 1 1 1 1 1 0 0 0 0___。

利用MATLAB进行时域分析

自动控制原理与系统课程实验报告 实验题目:利用MATLAB进行时域分析 班级:机电1131班姓名:刘润学号:38号 一、实验目的及内容 时域分析法是一种直接在时间域中对系统进行分析的方法,具有直观、准确的优点,并且可以提供系统时间响应的全部信息。在此实验中,主要介绍时域法进行系统分析,包括一阶系统、二阶系统以及高阶系统,以及系统的性能指标。通过实验,能够快速掌握、并利用MATLAB及控制系统箱对各种复杂控制系统进行时域分析。 二、实验设备 三、实验原理 典型的二阶系统在不同的阻尼比的情况下,它们的阶跃响应输出特性的差异是很大的。若阻尼比过小,则系统的振荡加剧,超调量大幅度增加;若阻尼比过大,则系统的响应过慢,又大大增加了调整时间,下面通过此实验课题分析输出响应变化规律: 已知二阶振荡环节的传递函数为:G(s)=ωn*ωn/(s*s+2*ζ*ωn*s+ωn*ωn), 其中ωn=0.4,ζ从0变化到2,求此系统的单位阶跃响应曲线,并分析当ζ发生变化时,二阶系统的响应有什么样的变化规律。

四、实验步骤编出程序如下图: 五、实验结果画出图表如下图:

六、结果分析 (1)当ξ=0(无阻尼)(零阻尼)时: 无阻尼时的阶跃响应为等幅振荡曲线。如图ξ=0曲线。 (2)当0<ξ<1(欠阻尼)时: 对应不同的ξ,可画出一系列阻尼振荡曲线,且ξ越小,振荡的最大振幅愈大。如图ξ=0.4曲线。 (3)当ξ=1(临界阻尼)时: 临界阻尼时的阶跃响应为单调上升曲线。如图ξ=1曲线。 (4)当ξ>1(过阻尼)时: 过阻尼时的阶跃响应也为单调上升曲线。不过其上升的斜率较临界阻尼更慢。如图ξ=1.6曲线 七、教师评语

matlab经典习题及解答

第1章 MATLAB概论 1.1与其他计算机语言相比较,MATLAB语言突出的特点是什么? MATLAB具有功能强大、使用方便、输入简捷、库函数丰富、开放性强等特点。 1.2 MATLAB系统由那些部分组成? MATLAB系统主要由开发环境、MATLAB数学函数库、MATLAB语言、图形功能和应用程序接口五个部分组成。 1.4 MATLAB操作桌面有几个窗口?如何使某个窗口脱离桌面成为独立窗口?又如何将脱离出去的窗口重新放置到桌面上? 在MATLAB操作桌面上有五个窗口,在每个窗口的右上角有两个小按钮,一个是关闭窗口的Close按钮,一个是可以使窗口成为独立窗口的Undock按钮,点击Undock按钮就可以使该窗口脱离桌面成为独立窗口,在独立窗口的view菜单中选择Dock ……菜单项就可以将独立的窗口重新防止的桌面上。 1.5 如何启动M文件编辑/调试器? 在操作桌面上选择“建立新文件”或“打开文件”操作时,M文件编辑/调试器将被启动。在命令窗口中键入edit命令时也可以启动M文件编辑/调试器。 1.6 存储在工作空间中的数组能编辑吗?如何操作? 存储在工作空间的数组可以通过数组编辑器进行编辑:在工作空间浏览器中双击要编辑的数组名打开数组编辑器,再选中要修改的数据单元,输入修改内容即可。 1.7 命令历史窗口除了可以观察前面键入的命令外,还有什么用途? 页脚内容1

命令历史窗口除了用于查询以前键入的命令外,还可以直接执行命令历史窗口中选定的内容、将选定的内容拷贝到剪贴板中、将选定内容直接拷贝到M文件中。 1.8 如何设置当前目录和搜索路径,在当前目录上的文件和在搜索路径上的文件有什么区别? 当前目录可以在当前目录浏览器窗口左上方的输入栏中设置,搜索路径可以通过选择操作桌面的file 菜单中的Set Path菜单项来完成。在没有特别说明的情况下,只有当前目录和搜索路径上的函数和文件能够被MATLAB运行和调用,如果在当前目录上有与搜索路径上相同文件名的文件时则优先执行当前目录上的文件,如果没有特别说明,数据文件将存储在当前目录上。 1.9 在MATLAB中有几种获得帮助的途径? 在MATLAB中有多种获得帮助的途径: (1)帮助浏览器:选择view菜单中的Help菜单项或选择Help菜单中的MATLAB Help菜单项可以打开帮助浏览器; (2)help命令:在命令窗口键入“help”命令可以列出帮助主题,键入“help 函数名”可以得到指定函数的在线帮助信息; (3)lookfor命令:在命令窗口键入“lookfor 关键词”可以搜索出一系列与给定关键词相关的命令和函数 (4)模糊查询:输入命令的前几个字母,然后按Tab键,就可以列出所有以这几个字母开始的命令和函数。 注意:lookfor和模糊查询查到的不是详细信息,通常还需要在确定了具体函数名称后用help命令显示详细信息。 第2章MATLAB矩阵运算基础 页脚内容2

matlab课程设计题目

课题一: 连续时间信号和系统时域分析及MATLAB实现 课题要求: 深入研究连续时间信号和系统时域分析的理论知识。利用MATLAB强大的图形处理功能、符号运算功能以及数值计算功能,实现连续时间信号和系统时域分析的仿真波形。 课题内容: 一、用MATLAB实现常用连续时间信号的时域波形(通过改变参数,分析其时域特性)。 1、单位阶跃信号, 2、单位冲激信号, 3、正弦信号, 4、实指数信号, 5、虚指数信号, 6、复指数信号。 二、用MATLAB实现信号的时域运算 1、相加, 2、相乘, 3、数乘, 4、微分, 5、积分 三、用MATLAB实现信号的时域变换(参数变化,分析波形变化) 1、反转, 2、使移(超时,延时), 3、展缩, 4、倒相, 5、综合变化 四、用MATLAB实现信号简单的时域分解 1、信号的交直流分解, 2、信号的奇偶分解 五、用MATLAB实现连续时间系统的卷积积分的仿真波形 给出几个典型例子,对每个例子,要求画出对应波形。 六、用MATLAB实现连续时间系统的冲激响应、阶跃响应的仿真波形。 给出几个典型例子,四种调用格式。 七、利用MATLAB实现连续时间系统对正弦信号、实指数信号的零状态响应的仿真波形。 给出几个典型例子,要求可以改变激励的参数,分析波形的变化。 课题二: 离散时间信号和系统时域分析及MATLAB实现。 课题要求: 深入研究离散时间信号和系统时域分析的理论知识。利用MATLAB强大的图

形处理功能、符号运算功能以及数值计算功能,实现离散时间信号和系统时域分析的仿真波形。 课题内容: 一、用MATLAB绘制常用信号的时域波形(通过改变参数分析其时域特性) 1、单位序列, 2、单位阶跃序列, 3、正弦序列, 4、离散时间实指数序列, 5、离散时间虚指数序列, 6、离散时间复指数序列。 二、用MATLAB实现信号的时域运算 1、相加, 2、相乘, 3、数乘。 三、用MATLAB实现信号的时域变换(参数变化,分析波形的变化) 1、反转, 2、时移(超时,延时), 3、展缩, 4、倒相。 四、用MATLAB实现离散时间系统卷积和仿真波形 给出几个典型例子,对每个例子要求画出e(k),h(k),e(i),h(i),h(-i),Rzs(k)波形。 五、用MATLAB实现离散时间系统的单位响应,阶跃响应的仿真波形 给出几个典型例子,四中调用格式。 六、用MATLAB实现离散时间系统对实指数序列信号的零状态响应的仿真波形 给出几个典型例子,要求可以改变激励的参数,分析波形的变化。 课题三: 连续时间信号傅里叶级数分析及MATLAB实现。 课题要求: 深入研究连续时间信号傅里叶级数分析的理论知识,利用MATLAB强大的图形处理功能,符号运算功能以及数值计算功能,实现连续时间周期信号频域分析的仿真波形。 课题内容: 一、用MATLAB实现周期信号的傅里叶级数分解与综合 以周期矩形波信号为例,绘出包含不同谐波次数的合成波形,观察合成波形与原矩形 波形之间的关系及吉布斯现象。

matlab经典编辑习题集及解答

第1章 MATLAB 概论 1.1 与其他计算机语言相比较,MATLAB 语言突出的特点是什么? MATLAB 具有功能强大、使用方便、输入简捷、库函数丰富、开放性强等特点。 1.2 MATLAB 系统由那些部分组成? MATLAB 系统主要由开发环境、MATLAB 数学函数库、MATLAB 语言、图形功能和应用程序接口五个部分组成。 1.4 MATLAB 操作桌面有几个窗口?如何使某个窗口脱离桌面成为独立窗口?又如何将脱离出去的窗口重新放置到桌面上? 在MATLAB 操作桌面上有五个窗口,在每个窗口的右上角有两个小按钮,一个是关闭窗口的Close 按钮,一个是可以使窗口成为独立窗口的Undock 按钮,点击Undock 按钮就可以使该窗口脱离桌面成为独立窗口,在独立窗口的view 菜单中选择Dock ……菜单项就可以将独立的窗口重新防止的桌面上。 1.5 如何启动M 文件编辑/调试器? 在操作桌面上选择“建立新文件”或“打开文件”操作时,M 文件编辑/调试器将被启动。在命令窗口中键入edit 命令时也可以启动M 文件编辑/调试器。 1.6 存储在工作空间中的数组能编辑吗?如何操作? 存储在工作空间的数组可以通过数组编辑器进行编辑:在工作空间浏览器中双击要编辑的数组名打开数组编辑器,再选中要修改的数据单元,输入修改内容即可。 1.7 命令历史窗口除了可以观察前面键入的命令外,还有什么用途? 命令历史窗口除了用于查询以前键入的命令外,还可以直接执行命令历史窗口中选定的内容、将选定的内容拷贝到剪贴板中、将选定内容直接拷贝到M 文件中。 1.8 如何设置当前目录和搜索路径,在当前目录上的文件和在搜索路径上的文件有什么区别? 当前目录可以在当前目录浏览器窗口左上方的输入栏中设置,搜索路径可以通过选择操作桌面的file 菜单中的Set Path 菜单项来完成。在没有特别说明的情况下,只有当前目录和搜索路径上的函数和文件能够被MATLAB 运行和调用,如果在当前目录上有与搜索路径上相同文件名的文件时则优先执行当前目录上的文件,如果没有特别说明,数据文件将存储在当前目录上。 1.9 在MATLAB 中有几种获得帮助的途径? 在MATLAB 中有多种获得帮助的途径: (1)帮助浏览器:选择view 菜单中的Help 菜单项或选择Help 菜单中的MATLAB Help 菜单项可以打开帮助浏览器; (2)help 命令:在命令窗口键入“help ” 命令可以列出帮助主题,键入“help 函数名”可以得到指定函数的在线帮助信息; (3)lookfor 命令:在命令窗口键入“lookfor 关键词”可以搜索出一系列与给定关键词相关的命令和函数 (4)模糊查询:输入命令的前几个字母,然后按T ab 键,就可以列出所有以这几个字母开始的命令和函数。 注意:lookfor 和模糊查询查到的不是详细信息,通常还需要在确定了具体函数名称后用help 命令显示详细信息。 第2章 MATLAB 矩阵运算基础 2.1 在MATLAB 中如何建立矩阵?? ? ???194375,并将其赋予变量a ? >> a=[5 7 3;4 9 1] 2.2 有几种建立矩阵的方法?各有什么优点? 可以用四种方法建立矩阵: ①直接输入法,如a=[2 5 7 3],优点是输入方法方便简捷; ②通过M 文件建立矩阵,该方法适用于建立尺寸较大的矩阵,并且易于修改; ③由函数建立,如y=sin(x),可以由MATLAB 的内部函数建立一些特殊矩阵; ④通过数据文件建立,该方法可以调用由其他软件产生数据。 2.3 在进行算术运算时,数组运算和矩阵运算各有什么要求? 进行数组运算的两个数组必须有相同的尺寸。进行矩阵运算的两个矩阵必须满足矩阵运算规则,如矩阵a 与b 相乘(a*b )

MATLAB习题参考答案

第1章 MATLAB简介 1、MA TLAB的主要特点有:①语言简洁,编程效率高。②人机界面友善,交互性好。③绘图功能强大,便于数据可视化。④学科众多、领域广泛的MATLAB工具箱。⑤源程序的开放性。 MATLAB的典型应用领域有:①自动控制②汽车③电子④仪器仪表⑤生物医学⑥信号处理⑦通信等。 2、填空题 ⑴命令窗口、命令历史窗口、当前目录窗口 ⑵查阅、保存、编辑 ⑶清除图形窗、清除命令窗口中显示内容、清除MATLAB工作空间中保存的变量。 3、如果想查看某一变量具体内容或者对其修改操作,可以在工作空间中双击该变量名称,可以打开数组编辑器,在数组编辑器中可以查看变量的具体内容,也可以对其修改。如果想删除MATLAB内存中的变量,可以在工作空间中选中该变量,然后利用工作空间窗口的菜单命令或工具条中的快捷图标进行删除。 4、1+2+3+4+5+... (+ 后面可以直接跟...,也可以在+和...中加一个空格。) 6+7+8+9 1+2+3+4+5 ... (5后面必须跟一个空格,不能直接跟...,否则报错,这在预置一个+6+7+8+9 大数组时很重要。) 第2章矩阵与数值数组 1、填空题: ⑴非数、无穷大、机器零阈值,浮点数相对精度,eps= 2.2204e-016。 ⑵全下标、单下标。 2、阅读程序题: (本题主要考察数组的寻访、赋值和简单运算,提示:带;的语句不显示结果) ⑴ans = 2 3 7 Sa = 10 20 30 A = 1 20 5 30 9 10 4 6 8 10 ⑵ A = 1 3 5 7 9 11 13 15

2 4 6 8 10 12 14 16 ans = 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 A = 0 0 5 7 0 0 13 15 2 4 0 0 10 12 0 0 ⑶ ans = -1 -4 6 4 ans = 3 0 5 -2 ans = 3 6 9 12 ans = 3 6 9 12 3、A=magic(4); L=A<10 L = 0 1 1 0 1 0 0 1 1 1 1 0 1 0 0 1 4、省略。 第3章字符串、元胞和构架数组 1. 直接创建法:S1=['Where there is life,' 'there is hope. '] %注意第2行要加入6个空格使其与第一 行字符数相等,否则报错。 S2=str2mat('Where there is life,','there is hope.') S3=strvcat('Where there is life,','there is hope.') %后两种方法则不用考虑两行 字符的数目 2. 填空题:A(2,3);A{2,3} 3. 阅读程序题: ⑴subch = ABc12

MATLAB习题及参考答案经典.doc

习题: 1, 计算?? ????=572396a 与??? ???=864142b 的数组乘积。 2, 对于B AX =,如果???? ? ?????=753467294A ,??????????=282637B ,求解X 。 3, 已知:?? ?? ? ?????=987654321a ,分别计算a 的数组平方和矩阵平方,并观察其结果。 4, 角度[]604530=x ,求x 的正弦、余弦、正切和余切。(应用sin,cos,tan.cot) 5, 将矩阵?? ?? ??=7524a 、??????=3817b 和??? ???=2695c 组合成两个新矩阵: (1)组合成一个4?3的矩阵,第一列为按列顺序排列的a 矩阵元素,第二列为按列顺序排列的b 矩阵元素,第三列为按列顺序排列的c 矩阵元素,即 ?? ??? ???? ???237 912685 574 (2)按照a 、b 、c 的列顺序组合成一个行矢量,即 []296531877254 6, 将(x -6)(x -3)(x -8)展开为系数多项式的形式。(应用poly,polyvalm) 7, 求解多项式x 3-7x 2+2x +40的根。(应用roots) 8, 求解在x =8时多项式(x -1)(x -2) (x -3)(x -4)的值。(应用poly,polyvalm) 9, 计算多项式9514124234++--x x x x 的微分和积分。(应用polyder,polyint ,poly2sym)

10, 解方程组???? ? ?????=??????????66136221143092x 。(应用x=a\b) 11, 求欠定方程组?? ? ???=???? ??5865394742x 的最小范数解。(应用pinv) 12, 矩阵???? ? ?????-=943457624a ,计算a 的行列式和逆矩阵。(应用det,inv) 13, y =sin(x ),x 从0到2π,?x =0.02π,求y 的最大值、最小值、均值和标准差。(应用max,min,mean,std) 14, 参照课件中例题的方法,计算表达式() 2 2 e 1053y x y x z ---=的梯度并绘图。(应用meshgrid, gradient, contour, hold on, quiver) 15, 用符号函数法求解方程a t 2+b*t +c=0。(应用solve) 16, 用符号计算验证三角等式:(应用syms,simple) 17, 求矩阵?? ? ? ??=2221 1211a a a a A 的行列式值、逆和特征根。(应用syms,det,inv,eig) 18, 因式分解:6555234-++-x x x x (应用syms, factor) 19, ? ??? ?? ?? =)sin()log(12 x x e x x a f ax ,用符号微分求df/dx 。(应用syms,diff) 20, 符号函数绘图法绘制函数x=sin(3t)cos(t),y=sin(3t)sin(t)的图形,t 的变化范围为[0,2π]。(应用syms,ezplot) 21, 绘制曲线13++=x x y ,x 的取值范围为[-5,5]。(应用plot) 22, 有一组测量数据满足-at e =y ,t 的变化范围为0~10,用不同的线型和标记点画出a=0.1、a=0.2和a=0.5三种情况下的曲线,在图中添加标题-at e =y ,并用箭头线标识出各曲线a 的取值,并添加标题-at e =y 和图例框。(应用plot,title,text,legend) 23 24, x= [66 49 71 56 38],绘制饼图,并将第五个切块分离出来。

Matlab考题题整理带答案

MATLAB 考试试题(1) 产生一个1x10的随机矩阵,大小位于(-5 5),并且按照从大到小的顺序排列好!(注:要程序和运行结果的截屏) 答案: a=10*rand(1,10)-5; b=sort(a,'descend') 1.请产生一个100*5的矩阵,矩阵的每一行都是[1 2 3 4 5] 2. 已知变量:A=’ilovematlab’;B=’matlab’, 请找出: (A)B在A中的位置。 (B)把B放在A后面,形成C=‘ilovematlabmatlab’ 3. 请修改下面的程序,让他们没有for循环语句! A=[1 2 3; 4 5 6; 7 8 9]; [r c]=size(A); for i=1:1:r for j=1:1:c if (A(i,j)>8 | A(i,j)<2) A(i,j)=0; end end end 4. 请把变量A=[1 2 3; 4 5 6; 7 8 9]写到文件里(output.xls),写完后文件看起来是这样的 1 2 3 4 5 6 7 8 9 5.试从Yahoo网站上获得微软公司股票的2008年9月的每日收盘价。 6.编写M文件,从Yahoo网站批量读取60000.SH至600005.SH在2008年9月份的每日收盘价(提示:使用字符串函数)。 7. 将金牛股份(000937)2005年12月14日至2006年1月10日的交易记录保存到Excel中,编写程序将数据读入MATLAB中,进一步将数据读入Access数据库文件。 8.已知资产每日回报率为0.0025,标准差为0.0208,资产现在价值为0.8亿,求5%水平下资产的10天在险价值(Var)。 9.a=[1 2 3 4 5],b=a(1)*a(5)+a(2)*a(4)+a(3)*a(3)+a(4)*a(2)+a(5)*a(1).试用MATLAB中最简单的方法计算b,注意最简单哦。

matlab例题

五、某公司投资2000万元建成一条生产线。投产后,在时刻t 的追加成本和追加收益分别为3/225)(t t t G ++=(百万元/年),3/218)(t t H -=(百万元/年)。试确定该生产线在何时停产可获最大利润?最大利润是多少? 提示:利用函数?=T G H t R 0t 20-d ))t (-)t (()((百万元),由于H (t )-G (t )单调 下降,所以H (t )=G (t )时,R (t )取得最大利润。 5.解:构造函数f(t)=H(t)-G(t)=13-t-3t 2/3=0 ; 令t 1/3=x,则f(t)=-t 3-3t 2+13 可得矩阵P=[-1,-3,0,13] 求最佳生产时间的源程序如下: p=[-1,-3,0,13]; x=roots(p); t=x.^3 运行结果如下: t = 3.6768 +21.4316i 3.6768 -21.4316i 4.6465 再分别将t 的三个值带入函数f(t),比较大小后,得到最大利润与最佳生产时间。 求最大利润的程序代码如下: ① t=3.6768 +21.4316i; x=0:0.01:t; y=13-x-3*x.^(2/3); trapz(x,y) 运行结果: ans = 25.2583 ② t=3.6768 -21.4316i; x=0:0.01:t; y=13-x-3*x.^(2/3); trapz(x,y) 运行结果: ans = 25.2583 ③ t=4.6465; x=0:0.01:t; y=13-x-3*x.^(2/3); trapz(x,y) 运行结果: ans = 26.3208 比较以上三组数据,可知最佳生产时间t=4.6465年,可获得的最大利润 26.3208(百万元/年)。 clear; close; fplot('18-t^(2/3)',[0,20]);grid on;hold on; fplot('5+t+2*t^(2/3)',[0,20],'r');hold off; %发现t 约为4

matlab经典编程例题

以下各题均要求编程实现,并将程序贴在题目下方。 1.从键盘输入任意个正整数,以0结束,输出那些正整数中的素数。 clc;clear; zzs(1)=input('请输入正整数:');k=1; n=0;%素数个数 while zzs(k)~=0 flag=0;%是否是素数,是则为1 for yz=2:sqrt(zzs(k))%因子从2至此数平方根 if mod(zzs(k),yz)==0 flag=1;break;%非素数跳出循环 end end if flag==0&zzs(k)>1%忽略0和1的素数 n=n+1;sus(n)=zzs(k); end k=k+1; zzs(k)=input('请输入正整数:'); end disp(['你共输入了' num2str(k-1) '个正整数。它们是:']) disp(zzs(1:k-1))%不显示最后一个数0 if n==0 disp('这些数中没有素数!')%无素数时显示 else disp('其中的素数是:') disp(sus) end 2.若某数等于其所有因子(不含这个数本身)的和,则称其为完全数。编程求10000以内所有的完全数。 clc;clear;

wq=[];%完全数赋空数组 for ii=2:10000 yz=[];%ii的因子赋空数组 for jj=2:ii/2 %从2到ii/2考察是否为ii的因子 if mod(ii,jj)==0 yz=[yz jj];%因子数组扩展,加上jj end end if ii==sum(yz)+1 wq=[wq ii];%完全数数组扩展,加上ii end end disp(['10000以内的完全数为:' num2str(wq)])%输出 3.下列这组数据是美国1900—2000年人口的近似值(单位:百万)。 (1)若. 2c + = y+ 与试编写程序计算出上式中的a、b、c; 的经验公式为 t at bt y (2)若.bt 的经验公式为 y= 与试编写程序计算出上式中的a、b; y ae t (3)在一个坐标系下,画出数表中的散点图(红色五角星),c + =2中 ax bx y+拟合曲线图(蓝色实心线),以及.bt y=(黑色点划线)。 ae (4)图形标注要求:无网格线,横标注“时间t”,纵标注“人口数(百万)”,图形标题“美国1900—2000年的人口数据”。 (5)程序中要有注释,将你的程序和作好的图粘贴到这里。 clf;clc;clear %清除图形窗、屏幕、工作空间 t=1900:10:2000; y=[76 92 106 123 132 151 179 203 227 250 281]; p1=polyfit(t,y,2);%二次多项式拟合

matlab典型例题

【例】水资源系统规划调度常应用系统分析方法处理,以一个水资源分配问题为例,讨论线性规划问题。例:有甲、乙两个水库同时给A、B、C三个城市供水,甲水库的日供水量为28万m3/d,乙水库的日供水量为35万m3/d,三个城市的日需水量分别为A≥10万m3/d,B≥15万m3/d,C≥20 万m3/d。由于水库与各城市的距离不等,输水方式不同,因此单位水费也不同。各单位水费分别为c11=2000元/万m3、c12=3000元/万m3、c13=4000元/万m3、c21=4500元/万m3、c22=3500元/万m3、c23=3000元/万m3。试作出在满足对三个城市供水的情况下,输水费用最小的方案。

设甲水库向三城市日供水量分别为x ll、x12、x13,乙水库向三城市日供水量分别为x2l、x22、x23。 建立约束条件: x11 + x21 ≥10 x12 + x22 ≥15 x13 + x23 ≥20 x11 + x12 + x13 ≤28 x21 + x22 + x23 ≤35 x11,x12,x13,x21,x22,x23,≥0 目标函数: fmin=c11x11+c12x12+c13x13+c21x21+c22x22+c23x23

这样的问题单纯求解是非常繁琐的,而MLTLAB求解是十分简单的,只要在命令行输入: 》f=[0.2 0.3 0.4 0.45 0.35 0.3]’; 》A=[-1 0 0 -1 0 0;0 -1 0 0 -1 0;0 0 -1 0 0 -1;1 1 1 0 0 0; 0 0 0 1 1 1]; 》B=[-10 -15 -20 28 35]; 》lb=zeros(6,1); 》[X,Zmin]=linprog(f,A,B,[],[],lb,[]) 最后得出x=[10 15 0 0 0 20]万m3,Zmin=12.5万元。

MatLab考试题题库(必做题)(带答案)

MatLab考试题题库(必做题)(带答案) 一, 1.请登陆美国 MathWorks 公司的网站,查看看现在大概有多少本 MATLAB-based books (以MATLAB 为基本软件,来说明各个专业领域的教科书或工具书)。哪一个领域的 MATLAB-based books 最多中文书共有几本 答:1612本,数学方面的最多,中文书共有37本。 2.请在 MATLAB中直接输入下列常数,看它们的值是多少: a.i b.j c.eps d.inf e.nan f.pi g.realmax h.realmin 依次解为:ans = 0 + ans = 0 + ans = ans =Inf ans = NaN ans = ans = +308 ans = 3.试写一函数 regPolygon(n),其功能为画出一个圆心在 (0, 0)、半径为 1 的圆,并在圆内画出一个内接正 n 边形,其中一顶点位于 (0, 1)。例如 regPolygon(8) 可以画出如下之正八边型:

解:新建文件如下: function y=regPolyfon(n) n=8;%要画的n边形 R=1; %圆的半径 t=0::2*pi; x=R*cos(t); y=R*sin(t); m=linspace(pi/2,5/2*pi,n+1); xz=R*cos(m); yz=R*sin(m); hold on plot(x,y,xz,yz);

axis 'equal'; 4.一条参数式的曲线可由下列方程式表示: x = sin(t), y = 1 - cos(t) + t/10 当 t 由 0 变化到 4*pi 时,请写一个 MATLAB 的脚本,画出此曲线在 XY 平面的轨迹。 解:新建: t = linspace(0, 4*pi); x = sin(t); y = 1-cos(t)+t/10; plot(x, y, '-o'); 5.当一个小圆轮沿着一条曲线行进时,轮缘任一点的轨迹就会产生变化丰富的摆线。假设小圆轮的半径 r=2。

matlab典型例题

例2.1 >> muw0=1.785; >> a=0.03368; >> b=0.000221; >> t=0:20:80; >> muw=muw0./(1+a*t+b*t.^2) 例2.2 数值数组和字符串的转换 >> a=[1:5]; >> b=num2str(a); >> a*2 ans = 2 4 6 8 10 >> b*2 ans = 98 64 64 100 64 64 102 64 64 104 64 64 106 例2.9比较左除和右除求解恰定方程 >> rand('seed',12); >> a=rand(100)+1.e8; >> x=ones(100,1); >> b=a*x; >> cond(a) ans = 5.0482e+011 >> tic;x1=b'/a;t1=toc t1 = 0.4711 >> er1=norm(x-x1') er1 = 139.8326

>> re1=norm(a*x1'-b)/norm(b) re1 = 4.3095e-009 >> tic;x1=a\b;t1=toc t1 = 0.0231 >> tic;x1=a\b;t1=toc t1 = 0.0011 >> er2=norm(x-x1) er2 = 1.5893e-004 >> re1=norm(a*x1-b)/norm(b) re1 = 4.5257e-016 例2.14:计算矩阵的指数 >> b=magic(3); >> expm(b) ans = 1.0e+006 * 1.0898 1.0896 1.0897 1.0896 1.0897 1.0897 1.0896 1.0897 1.0897 例 2.18:特征值条件数

人工智能典型例题MATLAB仿真实验报告

研究生(人工智能)报告 题目:人工智能实验报告 学号 姓名 专业电磁场与微波技术 指导教师 院(系、所) 华中科技大学研究生院制

1问题二 利用一阶谓词逻辑求解猴子摘香蕉问题:房内有一个猴子,一个箱子,天花板上挂了一串香蕉,其位置如图所示,猴子为了拿到香蕉,它必须把箱子搬到香蕉下面,然后再爬到箱子上。请定义必要的谓词,列出问题的初始化状态(即下图所示状态),目标状态(猴子拿到了香蕉,站在箱子上,箱子位于位置b)。 图1 猴子香蕉问题 解: ?定义描述环境状态的谓词。 AT(x,w):x在t处,个体域:x?{monkey},w?{a,b,c,box}; HOLD(x,t):x手中拿着t,个体域:t?{box,banana}; EMPTY(x):x手中是空的; ON(t,y):t在y处,个体域:y?{b,c,ceiling}; CLEAR(y):y上是空的; BOX(u):u是箱子,个体域:u?{box}; BANANA(v):v是香蕉,个体域:v?{banana}; ?使用谓词、连结词、量词来表示环境状态。 问题的初始状态可表示为: S o:AT(monkey,a)?EMPTY(monkey)?ON(box,c)?ON(banana,ceiling)?CLEAR(b)?BOX(box)?BANANA(banana) 要达到的目标状态为: S g:AT(monkey,box)?HOLD(monkey,banana)?ON(box,b)?CLEAR(ceiling)?CLEAR(c)?

BOX(box)?BANANA(banana) ? 从初始状态到目标状态的转化, 猴子需要完成一系列操作, 定义操作类谓词 表示其动作。 WALK(m,n):猴子从m 走到n 处,个体域:m,n ?{a,b,c}; CARRY(s,r):猴子在r 处拿到s ,个体域:r ?{c,ceiling},s ?{box,banana}; CLIMB(u,b):猴子在b 处爬上u ; 这3个操作也可分别用条件和动作来表示。条件直接用谓词公式表示,是为完成相应操作所必须具备的条件;当条件中的事实使其均为真时,则可激活操作规则,于是可执行该规则中的动作部分。动作通过前后状态的变化表示,即通过从动作前删除或增加谓词公式来描述动作后的状态。 WALK(m,n):猴子从m 走到n 处 条件:AT(monkey,m) 动作:?? ?) ,(),(n monkey AT m monkey AT 增加:删除: CARRY(s,r):猴子在r 处拿到s 条件:AT(monkey,r)?EMPTY(monkey)?ON(s,r)?BOX(box)?BANANA(banana) 动作:?? ?∧∧) (),(),()(r CLEAR s monkey HOLD r s ON monkey EMPTY 增加:删除: CLIMB(u,b):猴子在b 处爬上u 条件:AT(monkey,b)?HOLD(monkey,u)?CLEAR(b)?BOX(box)?BANANA(banana) 动作:? ??∧∧∧),()(),()(),(),(c u ON monkey EMPTY u monkey AT c CLEAR u monkey HOLD b monkey AT 增加:删除: ? 按照行动计划, 一步步进行状态替换, 直至目标状态。 AT(monkey,a)?EMPTY(monkey)?ON(box,c)?ON(banana,ceiling)?CLEAR(b)?BOX(box)? BANANA(banana) n c m a c a WALK 代换用代换用,),(? AT(monkey,c)?EMPTY(monkey)?ON(box,c)?ON(banana,ceiling)?CLEAR(b)?BOX(box)? BANANA(banana) r box s c box c CARRY 代换用代换用,),(? AT(monkey,c)?HOLD(monkey,box)?ON(banana,ceiling)?CLEAR(b)?CLEAR(c)?BOX(box)?

《MATLAB_语言与数学运算》练习答案

《MATLAB 语言与数学运算》实验课程任务书 一、实验教学目标与基本要求 上机实验是本课程重要的实践教学环节。实验的目的不仅仅是验证理论知识,更重要的是通过上机加强学生的实验手段与实践技能,掌握应用MATLAB 语言求解问题的方法,培养学生分析问题、解决问题、应用知识的能力和创新精神,全面提高学生的综合素质。 上机学时为4学时,主要内容是基于上课内容对课后典型习题应用MATLAB进行求解,基本掌握常见数学问题的求解方法与命令调用,更深入地认识和了解MATLAB语言的强大的计算功能。 上机实验最终以书面报告的形式提交,作为期末成绩的考核内容。 二、实验内容(4 学时) 第一部分MATLAB 语言编程、科学绘图与基本数学问题求解(4学时) 主要内容:掌握MATLAB 语言编程、科学绘图、微积分、线性代数问题等基本数学问题的求解与应用。 练习题: 1、安装MATLAB 软件,应用demo 命令了解主要功能,熟悉基本功能,会用help 命令。 2、用MATLAB 语句输入矩阵A 和B 矩阵 前面给出的是4 × 4 矩阵,如果给出A(5,6) = 5 命令将得出什么结果? 答案: 3、假设已知矩阵A,试给出相应的MATLAB 命令,将其全部偶数行提取出来,赋给B 矩阵,用A =magic(8) 命令生成A 矩阵,用上述的命令检验一下结果是不是正确。

答案: 4、用数值方法可以求出, 试不采用循环的形式求出和式的数值解。由于数值方法采用double 形式进行计算的,难以保证有效位数字,所以结果不一定精确。试采用符号运算的方法求该和式的精确值。

5、 答案; 答案:

MATLAB练习题目

1.写一个MATLAB小程序findN01.m,求出最小的n值,使得n!>realmax。请问n的值是多少?此时(n-1)!的值又是多少?(1分) 2.写一个MATLAB函数myFun.m来计算下列方程式:(1分) y=0.5*exp(x/3)-x*x*sin(x) 其中x是函数的输入,y是函数的输出。你的函数必须能够处理当种情况。此外,请利用下述两列程序代码来画出此函数的图形: 3.写一个MATLAB函数piFun.m来计算下列级数:(1分) f(n)=4*(1-1/3+1/5-1/7+1/9-1/11+...) 其中n为函数的输入,代表上述级数的项数,级数和f(n)则是函数的输出。 4.一条由参数方程表示的曲线为:(1分) x=sin(t),y=1-cos(t)+t/10 当t由0变化到4*pi时,请写一个MATLAB的脚本plotParam.m,画出此曲线在XY平面的轨迹。 5.一个平面上的椭圆可以表示成下列方程式:(2分) (x/a)2+(y/b)2=1 我们也可以用参数式将椭圆表示成: x=a*cos(τ)y=b*sin(τ) 请利用上述参数式,写一个函数ellipse(a,b),其功能是画出一个椭圆,而且椭圆上共有100个点。例如,ellipse(7,2)可以产生下列图形:

6.请用写一个MATLAB脚本figSolve.m,利用图解法,说明下列方程组有无穷多解:(1分) y=x y=sin(1/x) 请务必画出上述两条曲线来加以说明之。 7.利萨如图形(Lissajous Figure,又称为Bowditch Curve)可用下列参数式来表示:(2分) x=cos(m*τ) y=sin(n*τ) 画出在不同m、n值的利萨如图形: a.m=n=1 b.m=3,n=2 c.m=2,n=7 d.m=10,n=11 8.Chebyshev多项式的定义如下:(2分) cos?) y=cos(m*x1

相关主题