第四章matlab程序设计

合集下载

《MATLAB_程序设计与应用》刘卫国高等教育出版社-第4章课后答案

《MATLAB_程序设计与应用》刘卫国高等教育出版社-第4章课后答案

第四章1.a=input('请输入一个4位数:');while (a<1000|a>9999)a=input('输入错误,请重新输入一个4位数:'); endb=fix(a/1000);c=rem(fix(a/100),10);d=rem(fix(a/10),10);e=rem(a,10);b=b+7;c=c+7;d=d+7;e=e+7;b=rem(b,10);c=rem(c,10);d=rem(c,10);e=rem(e,10);g=b;b=d;d=g;g=c;c=e;e=g;a=1000*b+100*c+10*d+e;disp(['加密后:',num2str(a)])2.逻辑表达式法:a=input('请输入a: ');b=input('请输入b: ');c=input('请输入c: ');x=0.5:1:5.5;x1=(x>=0.5&x<1.5);x2=(x>=1.5&x<3.5);x3=(x>=3.5&x<=5.5);y1=a.*(x.^2)+b.*x+c;y2=a*(sin(b)^c)+x;y3=log(abs(b+c./x));y=y1.*x1+y1.*x2+y3.*x3; disp(y)if语句法:a=input('请输入a: ');b=input('请输入b: ');c=input('请输入c: ');for x=0.5:1:5.5if x>=0.5 & x<1.5y=a.*(x.^2)+b.*x+celseif x>=1.5 & x<3.5y=a*(sin(b)^c)+xelseif x>=3.5 & x<5.5y=log(abs(b+c./x))endendswitch语句法:a=input('请输入a: ');b=input('请输入b: ');c=input('请输入c: ');for x=0.5:1:5.5switch floor(x/0.5)case {1,2}y=a.*(x.^2)+b.*x+c;case {3,4,5,6}y=a*(sin(b)^c)+x;case {7,8,9,10}y=log(abs(b+c./x)); enddisp(y)end3.x=fix(rand(1,20)*89)+10;x1=mean(x);n=find(rem(x,2)==0 & x<x1);disp(['小于平均数的偶数是:',num2str(x(n))]);4.(1)A=input('请输入20个数的一个行向量:');a=A(1);b=A(1);for m=Aif a>=ma=m;elseif b<=mb=m;endenddisp(['最小数是:',num2str(a)])disp(['最大数是:',num2str(b)])(2)A=input('请输入20个数的一个行向量:'); maxval=max(A)minval=min(A)5.s=0;for a=0:63c=2^a;s=s+c;enddisp(['2的0次方到63次方的和是:',num2str(s)])k=0:63n=2.^ks=sum(n)6.(1)sum1=0;for n=1:100x=(-1)^(n+1)*(1/n);sum1=sum1+x;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=0;for n=1:1000x=(-1)^(n+1)*(1/n);sum2=sum2+x;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=0;for n=1:10000x=(-1)^(n+1)*(1/n);sum3=sum3+x;enddisp(['当n取10000时:sum=',num2str(sum3)])(2)sum1=0;n1=0;for n=1:2:100x=(-1)^n1*(1/n);sum1=sum1+x;n1=n1+1;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=0;n2=0;for n=1:2:1000x=(-1)^n2*(1/n);sum2=sum2+x;n2=n2+1;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=0;n3=0;for n=1:2:10000x=(-1)^n3*(1/n);sum3=sum3+x;n3=n3+1;enddisp(['当n取10000时:sum=',num2str(sum3)])(3)sum1=0;for n=1:100x=1/(4^n);sum1=sum1+x;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=0;for n=1:1000x=1/(4^n);sum2=sum2+x;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=0;for n=1:10000x=1/(4^n);sum3=sum3+x;enddisp(['当n取10000时:sum=',num2str(sum3)])(4)sum1=1;for n=1:100x=4*n*n/(2*n-1)/(2*n+1);sum1=sum1*x;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=1;for n=1:1000x=4*n*n/(2*n-1)/(2*n+1);sum2=sum2*x;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=1;for n=1:10000x=4*n*n/(2*n-1)/(2*n+1);sum3=sum3*x;enddisp(['当n取10000时:sum=',num2str(sum3)])7.函数文件function f=fibnacci(n)if n==1 | n==2f=1;elsef=fibnacci(n-1)+fibnacci(n-2);end命令文件:shulie=[];for k=1:nshulie=[shulie fibnacci(k)];endshulie8.function [f1,f2]=juzhenji(x1,x2)f1=x1*x2;f2=x1.*x2;命令文件:clear alla=input('请输入一个矩阵:');b=input('请再输入一个矩阵:(注意:两矩阵要可以相乘)'); [f1,f2]=juzhenji(a,b);disp(f1)disp(f2)9.function sum=qiuhe(n,m)if n<=1sum=0;elsesum=n^m+qiuhe(n-1,m);end命令文件:clear ally=qiuhe(100,1)+qiuhe(50,2)+qiuhe(10,-1);disp(y)10.s=0;a=[12,13,14;15,16,17;18,19,20;21,22,23];for k=afor j=1:4if rem(k(j),2)~=0 s=s+k(j);endendendss =108(2)global xx=1:2:5;y=2:2:6;sub(y);xyfunction fun=sub(z) global xz=3*x;x=x+z;x =4 12 20 y =2 4 6。

第四章MATLAB程序设计

第四章MATLAB程序设计
while <条件1>
……
if <条件2>
break
end
……
end
2.continue语句
continue语句用于提前结束循环,可用于while和for语句结构中。
while <条件1>
……
if <条件2>
continue;
end
……
end
3.try
4.return
5.keyboard
6.pause
图4-2
在MATLAB中,选择语句结构由两种语句结构实现。
1.if语句
if语句是实现MATLAB选择结构的最主要形式,其基本格式为:
if表达式
程序模块1
else
程序模块2
end
在这里,如果表达式的值为真(非零值),则执行程序模块1,然后跳过程序模块2,向下执行后续语句;如果表达式的值为假(零值),则执行程序模块2,然后向下执行。
程序end
2.switch语句
虽然多分支if语句可以实现多重选择,但如果分支过多,则嵌套的if语句的层次就会很多,使程序可读性差,而使用swith语句就比较简洁明了,其格式为:
switch表达式
case数值1
程序模块1
case数值2
程序模块2
。。。
otherwise
程序模块n
其格式为:
for循环变量=起始值:步长:终止值
循环体
end
其中步长值可以在正实数和负实数范围内任意指定,默认值为1.对于正数,当循环变量的值大于终止值时,循环结束;对于负数,当循环变量的值小于终止值时,循环结束。
2.while语句循环结构

matlab第四章课件

matlab第四章课件

4.1.1 M文件的分类
M文件是由若干 Matlab 命令组合在一起构成的,它可 以完成某些操作,也可以实现某种算法
事实上,Matlab 提供的内部函数以及各种工具箱,都是利用 Matlab 语言编写的 M文件 用户也可以结合自己的工作需要,开发自己的程序或工具箱
M文件根据调用方式的不同可以分为两类: Script file:命令文件/脚本文件 Function file:函数文件
例2 输入x,y的值,并将它们的值互换后输出(swap.m)。 x=input('Input x please.'); y=input('Input y please.'); z=x; x=y; y=z; disp(x); disp(y); 例3 求一元二次方程ax2 +bx+c=0的根(root.m)。 a=input('a=?'); b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]; disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);
例如:
s=0; a=[12 13 14;15 16 17;18 19 20;21 22 23] for k=a s=s+k; end disp(s); 该程序的功能是求矩阵各行元素之和,执行结果是: 39 48 57 66
while语句
while expr (条件) statement(循环体语句) end 若expr成立,则执行循环体的内容,执行后 再判断条件是否为真,如果不成立则跳出循环体。

第4章MATLAB程序设计

第4章MATLAB程序设计
27
例4-12 求[100,200]之间第一个能被21整除的整数。 程序如下:
for n=100:200 if rem(n,21)~=0
continue end break end n
28
4.循环的嵌套 如果一个循环结构的循环体又包括一个循环结构,就
称为循环的嵌套,或称为多重循环结构。实现多重循环 结构仍用前面介绍的3种循环语句。因为任一循环语句 的循环体部分都可以包含另一个循环语句。
1.for语句 for语句的格式为:
for 循环变量=表达式1:表达式2:表达式3 循环体语句
end 其中表达式1的值为循环变量的初值,表达式2的值 为步长,表达式3的值为循环变量的终值。步长为1 时,表达式2可以省略。
21
例4-8 一个三位整数各位数字的立方和等于该数本 身则称该数为水仙花数。输出全部水仙花数。
end 执行过程是依次将矩阵的各列元素赋给循环变量,
然后执行循环体语句,直至各列元素处理完毕。 例3-10 写出下列程序的执行结果。
s=0;
a=[12,13,14;15,16,17;18,19,20;21,22,23];
for k=a
s=s+k;
end
disp(s');
24
2.while语句 while语句的一般格式为: while (条件) 循环体语句 end 其执行过程为:若条件成立,则执行循环体语句,执 行后再判断条件是否成立,如果不成立则跳出循环。
2500≤price<5000 10%折扣
5000≤price 14%折扣
输入所售商品的价格,求其实际销售价格。
17
程序如下:
price=input('请输入商品价格');

《MATLAB_程序设计与应用》刘卫国高等教育出版社-第4章课后答案

《MATLAB_程序设计与应用》刘卫国高等教育出版社-第4章课后答案

第四章1.a=input('请输入一个4位数:');while (a<1000|a>9999)a=input('输入错误,请重新输入一个4位数:'); endb=fix(a/1000);c=rem(fix(a/100),10);d=rem(fix(a/10),10);e=rem(a,10);b=b+7;c=c+7;d=d+7;e=e+7;b=rem(b,10);c=rem(c,10);d=rem(c,10);e=rem(e,10);g=b;b=d;d=g;g=c;c=e;e=g;a=1000*b+100*c+10*d+e;disp(['加密后:',num2str(a)])2.逻辑表达式法:a=input('请输入a: ');b=input('请输入b: ');c=input('请输入c: ');x=0.5:1:5.5;x1=(x>=0.5&x<1.5);x2=(x>=1.5&x<3.5);x3=(x>=3.5&x<=5.5);y1=a.*(x.^2)+b.*x+c;y2=a*(sin(b)^c)+x;y3=log(abs(b+c./x));y=y1.*x1+y1.*x2+y3.*x3; disp(y)if语句法:a=input('请输入a: ');b=input('请输入b: ');c=input('请输入c: ');for x=0.5:1:5.5if x>=0.5 & x<1.5y=a.*(x.^2)+b.*x+celseif x>=1.5 & x<3.5y=a*(sin(b)^c)+xelseif x>=3.5 & x<5.5y=log(abs(b+c./x))endendswitch语句法:a=input('请输入a: ');b=input('请输入b: ');c=input('请输入c: ');for x=0.5:1:5.5switch floor(x/0.5)case {1,2}y=a.*(x.^2)+b.*x+c;case {3,4,5,6}y=a*(sin(b)^c)+x;case {7,8,9,10}y=log(abs(b+c./x)); enddisp(y)end3.x=fix(rand(1,20)*89)+10;x1=mean(x);n=find(rem(x,2)==0 & x<x1);disp(['小于平均数的偶数是:',num2str(x(n))]);4.(1)A=input('请输入20个数的一个行向量:');a=A(1);b=A(1);for m=Aif a>=ma=m;elseif b<=mb=m;endenddisp(['最小数是:',num2str(a)])disp(['最大数是:',num2str(b)])(2)A=input('请输入20个数的一个行向量:'); maxval=max(A)minval=min(A)5.s=0;for a=0:63c=2^a;s=s+c;enddisp(['2的0次方到63次方的和是:',num2str(s)])k=0:63n=2.^ks=sum(n)6.(1)sum1=0;for n=1:100x=(-1)^(n+1)*(1/n);sum1=sum1+x;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=0;for n=1:1000x=(-1)^(n+1)*(1/n);sum2=sum2+x;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=0;for n=1:10000x=(-1)^(n+1)*(1/n);sum3=sum3+x;enddisp(['当n取10000时:sum=',num2str(sum3)])(2)sum1=0;n1=0;for n=1:2:100x=(-1)^n1*(1/n);sum1=sum1+x;n1=n1+1;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=0;n2=0;for n=1:2:1000x=(-1)^n2*(1/n);sum2=sum2+x;n2=n2+1;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=0;n3=0;for n=1:2:10000x=(-1)^n3*(1/n);sum3=sum3+x;n3=n3+1;enddisp(['当n取10000时:sum=',num2str(sum3)])(3)sum1=0;for n=1:100x=1/(4^n);sum1=sum1+x;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=0;for n=1:1000x=1/(4^n);sum2=sum2+x;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=0;for n=1:10000x=1/(4^n);sum3=sum3+x;enddisp(['当n取10000时:sum=',num2str(sum3)])(4)sum1=1;for n=1:100x=4*n*n/(2*n-1)/(2*n+1);sum1=sum1*x;enddisp(['当n取100时: sum=',num2str(sum1)])sum2=1;for n=1:1000x=4*n*n/(2*n-1)/(2*n+1);sum2=sum2*x;enddisp(['当n取1000时: sum=',num2str(sum2)])sum3=1;for n=1:10000x=4*n*n/(2*n-1)/(2*n+1);sum3=sum3*x;enddisp(['当n取10000时:sum=',num2str(sum3)])7.函数文件function f=fibnacci(n)if n==1 | n==2f=1;elsef=fibnacci(n-1)+fibnacci(n-2);end命令文件:shulie=[];for k=1:nshulie=[shulie fibnacci(k)];endshulie8.function [f1,f2]=juzhenji(x1,x2)f1=x1*x2;f2=x1.*x2;命令文件:clear alla=input('请输入一个矩阵:');b=input('请再输入一个矩阵:(注意:两矩阵要可以相乘)'); [f1,f2]=juzhenji(a,b);disp(f1)disp(f2)9.function sum=qiuhe(n,m)if n<=1sum=0;elsesum=n^m+qiuhe(n-1,m);end命令文件:clear ally=qiuhe(100,1)+qiuhe(50,2)+qiuhe(10,-1);disp(y)10.s=0;a=[12,13,14;15,16,17;18,19,20;21,22,23];for k=afor j=1:4if rem(k(j),2)~=0 s=s+k(j);endendendss =108(2)global xx=1:2:5;y=2:2:6;sub(y);xyfunction fun=sub(z) global xz=3*x;x=x+z;x =4 12 20 y =2 4 6。

matlab课件第4讲-程序设计

matlab课件第4讲-程序设计
第24页,共43页。
(二)选择结构
根据给定的条件是否成立而分别执行不同的语句
Matlab 用于实现选择结构的语句有 if 和 switch 语句
if 语句
✓ 单分支
if expr (条件) statement (语句组)
end
✓ 双分支
if expr (条件)
statement1(语句组1)
y=input('Please input y=:');
[gam,the]=tran(x,y);
第15页,共43页。
举例(二)
例:利用函数的递归调用计算 n!
1,
n 1
n! n (n 1)!, n 1
% 函数文件 factor.m function f=factor(n) if (n<=1)
... ...
case exprm(表达式 m) statementm(语句组 m)
otherwise
statement (语句组)
end
第27页,共43页。
switch 语句(续)
当任意一个分支的语句执行完后,直接执行 switch 语句 后面的语句。 switch 子句后面的表达式可以是一个标量或字符 串;case 子句后面的表达式可以是标量或字符串, 也可以是一个单元(cell),此时表达式的值等于该
%fcircle 半径为r的圆的面积和周长
%r
圆半径
%s
圆面积
%p
圆周长
%编制时间:2010年8月30日
s=pi*r*r;
p=2*pi*r;
第12页,共43页。
几点说明
函数文件内定义的变量仅在函数文件内部起作用, 当函数文件执行完成后,这些内部变量将被清除

matlabch04matlab程序设计基础知识

matlabch04matlab程序设计基础知识

MATLAB数组操作
单击此处添加副标题
数组创建与访问
创建数组
使用方括号`[]`创建数组,元素之间用空格或 逗号分隔。例如,`A = [1 2 3; 4 5 6]`创建一 个2x3的数组。
访问数组元素
通过下标访问数组元素,下标从1开始。例如, `A(1,2)`访问数组A的第1行第2列元素。
访问数组子集
matlabch04matlab 程序设计基础知识
添加副标题
汇报人姓名


单击添加文本
单击添加文本
MATLAB程序设计概述
单击此处添加副标题
MATLAB简介
23% Option 1
M AT L A B 定 义
MATLAB是Matrix Laboratory (矩阵实验室)的缩写,是一款由 MathWorks公司开发的商业数学 软件。
工程和科学计算 MATLAB被广泛应用于工程和科学计算 领域,如信号处理、图像处理、控制系
统设计等。 算法开发与仿真 MATLAB支持算法开发和仿真,可用 于机器学习、深度学习、优化算法等
领域。
数据分析与可视化
MATLAB提供了丰富的数据分析和可 视化工具,可用于数据挖掘、统计分 析、数据可视化等方面。
数据类型 MATLAB支持多种数据类型,包括数值型(整数 和浮点数)、字符型、逻辑型、结构体和单元数 组等。
变量赋值 使用等号(=)进行赋值,例如`x = 5;`将数值5 赋给变量x。
运算符与表达式
用于比较两个值的大小关系,如等于 (==)、不等于(~=)、大于 (>)、小于(<)等。
MATLAB按照运算符优先级和结合性 规则对表达式进行求值。
02
01

《MATLAB程序设计》第4章数组及应用

《MATLAB程序设计》第4章数组及应用
数组在内 存中的地 址
0x0012FF68 a[0] 0x0012FF6C a[1] 0x0012FF70 a[2] 0x0012FF74 a[3]
数组元素
0x0012FF78 a[4]
0x0012FF7C a[5]
8
一维数组在内存中的存储形式
说明:
(1)数组名a表示内存首地址,是地址常量。
(2)数组a中每个数组元素占的内存空间根据 数组类型确定,整个数组占的内存为:数组元 素个数乘以每个元素所占内存空间如: int a[10]; 4×10=40 float b[20]; 4×20=80 double c[5]; 8×5=40 char d[8]; 1×8=8
第4章 数组
教学内容
数组的定义及应用
字符串处理函数
几个常用算法:排序算法(选择排序、
冒泡排序)
1
第4章 数组
重点、难点
数组的定义及应用
常用算法的设计(选择排序、
冒泡排序)
2
第4章 数组
教学目标
熟练掌握数组的定义及应用
掌握字符数组的定义及应用
掌握常用的字符串处理函数
熟练掌握几个常用算法:排序
算法(选择排序、冒泡排序)
分析:所谓转置就是将矩阵的行列互换,即将 a矩阵 的a[i][j]元素变成b矩阵的b[j][i]。
24
#include <iostream> using namespace std; int main() { int a[3][4] ={{1,2,3,4},{3,4,5,6},{5,6,7,8}}; int b[4][3],i,j; for(i=0;i<3;i++) //输出二维数组a[3][4] { for(j=0;j<4;j++) cout<<a[i][j]<<" "; cout<<endl; } for(i=0;i<4;i++) //将矩阵a转置给矩阵b for(j=0;j<3;j++) b[i][j]=a[j][i]; for(i=0;i<4;i++) //输出二维数组b[4][3] { for(j=0;j<3;j++) cout<<b[i][j]<<" "; cout<<endl; } return 0;}

MATLAB程序设计教程

MATLAB程序设计教程

MATLAB程序设计教程第一章:MATLAB简介1.1 MATLAB的定义和特点1.2 MATLAB的应用领域1.3 MATLAB的优势和劣势第二章:MATLAB基础知识2.1 MATLAB的安装和启动2.2 MATLAB界面介绍和常用功能2.3 MATLAB的数据类型和变量2.4 MATLAB的基本运算符和表达式2.5 MATLAB的控制流程语句第三章:MATLAB函数与脚本文件3.1 MATLAB函数的定义和调用3.2 MATLAB脚本文件的创建和运行3.3 MATLAB函数和脚本文件的参数传递3.4 MATLAB函数和脚本文件的调试技巧第四章:MATLAB图形绘制4.1 MATLAB图形绘制的基本函数4.2 MATLAB图形绘制的详细参数设置4.3 MATLAB图形的保存和导出第五章:MATLAB矩阵运算5.1 MATLAB中矩阵的创建和索引5.2 MATLAB中矩阵的运算和操作5.3 MATLAB中常用的矩阵函数第六章:MATLAB数值计算6.1 MATLAB中数值计算的基本函数6.2 MATLAB中数值计算的高级功能6.3 MATLAB中数值计算的常见问题和解决方法第七章:MATLAB符号计算7.1 MATLAB中符号计算的基本概念7.2 MATLAB中符号计算的基本函数7.3 MATLAB中符号计算的应用领域第八章:MATLAB应用案例8.1 MATLAB在工程学科中的应用案例8.2 MATLAB在科学研究中的应用案例8.3 MATLAB在数据分析中的应用案例第九章:MATLAB拓展与应用9.1 MATLAB与其他编程语言的结合9.2 MATLAB的工具箱和函数库9.3 MATLAB的二次开发和应用扩展结语:MATLAB作为一种强大的科学计算软件,具备广泛的应用领域和丰富的功能模块,通过本教程的学习,读者可以系统地掌握MATLAB的基本知识和应用技巧,并能够利用MATLAB解决实际问题。

第4章MATLAB程序设计

第4章MATLAB程序设计

例 求一个值n,使n!最大但小于1050。 MATLAB程序如下: %初始化 r=1;k=1; 执行后结果如下: %做循环 The 41!Is while r<1e50 3.345253e+049 r=r*k; k=k+1; end k=k-1;r=r/k;k=k-1; % 输出结果 disp(['The',num2str(k),'!is',num2str(r)])
4.2.3 循环结构 for 循环:可完成指定次重复的循环,且在循环开 始之前,就知道代码重复的次数。
while 循环:while语句可完成不定次重复的循 环,与for语句不同,每次循环前要先判断条件 是否满足,再决定循环是否进行。
例 利用rand函数产生10个随机数,然后利用嵌套 for循环进行从小到大排序。
2 1.5 1 0.5 0 150 100 50
然后通过调用函数fun计算出z, 并利用mesh绘制出网格线。 编写的脚本文件如下: % 坐标系准备 x=[0:.02:2]; y=[-2:.02:0]; % 调用函数计算函数值 z=fun(x,y); % 绘图 figure mesh(z)
150 100 50
4.3.2 函数的调用 函数调用的一般格式如下: [输出实参表] = 函数名(输入实参表) 要注意的是,函数调用时各实参出现的顺 序、个数,应与函数定义时形参的顺序、 个数一致,否则会出错。函数调用时,先 将实参传递给相应的形参,从而实现参数 传递,然后再执行函数的功能。
例 对于函数
z ( x 1)2 ( y 1)2
fprintf函数中,format字符中常常会使用到一些特 殊字符来灵活的实现一些显示功能 format string 结果 %d %e %f %g 把值作为整数来处理 用科学记数法来显示数据 用于格式化浮点数,并显示这个 数 用科学记数格式,或浮点数格式, 根据那个表示的数位短,显示那 个 转到新的一行

第4章-MATLAB程序设计

第4章-MATLAB程序设计

第四章 MATLAB程序设计
例如,编写一个测试函数,要求当输入为一个变量时, 计算出这一变量的平方;当输入为两个变量时,求出这两个 变量的乘积。我们可编写以下函数文件:
function c=testargl(a,b) if (nargin==1)
c=a.^2; elseif (nargin==2)
m=n; end s1=sum(x); s2=sum(x.^2);
第四章 MATLAB程序设计
mean1=s1/m; stdev=sqrt(s2/m-mean1.^2); 函数文件stat2.m function [mean1,stdev]=stat2(x) % 求阵列x的平均值和标准差 % 调用格式为 % [mean,stdev]=stat2(x) % [m,n]=size(x); if m==1
第四章 MATLAB程序设计
所有在函数中使用和生成的变量都为局部变量(除非利用 global语句定义),这些变量值只能通过输入和输出变量进行 传递。因此,在调用函数时应通过输入变量将参数传递给函 数;函数调用返回时也应通过输出变量将运算结果传递给函 数调用者;在函数中产生的其它变量在返回时被全部清除。
这些问题在函数文件中不复存在,MATLAB通过实参与 形参一一对应的方式来实现函数的调用,这极大地方便了程 序设计。
第四章 MATLAB程序设计
例如,编写出求取平均值的脚本文件stat1.m,再编写出求 取标准差的函数文件stat2.m。程序如下:
脚本文件stat1.m % 脚本文件 % 求阵列x的平均值和标准差 % [m,n]=size(x); if m==1
第四章 MATLAB程序设计
第四章 MATLAB程序设计
4.1 MATLAB程序设计初步 4.2 流程控制 4.3 用户参数交互输入 4.4 程序设计技术 4.5 MATLAB程序调试 4.6 语言结构与调试函数 习题

第04章_MATLAB程序设计_参考解答

第04章_MATLAB程序设计_参考解答
高教社刘卫国《MATLAB 程序设计与应用》 (第二版)习题参考解答
第 4 章:MATLAB 程序设计
第4章
教材 P81 习题四
MATLAB 程序设计
1. 从键盘上输入一个 4 位整数, 按如下规则加密后输出。 加密规则: 每位数字都加上 7, 然后用和除以 10 的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。 答:程序设计: clear all; close all; clc; a=input('请输入一个 4 位整数:'); while (a<1000|a>9999) a=input('输入错误,不是一个 4 位整数,请输入一个 4 位整数:'); end b=fix(a/1000); %千位数字(第四位数字) c=rem(fix(a/100),10); %百位数字(第三位数字) d=rem(fix(a/10),10); %十位数字(第二位数字) e=rem(a,10); %个位数字(第一位数字) b=rem(b+7,10); %该位数字加 7,然后用和除以 10 的余数取代该数字 c=rem(c+7,10); %该位数字加 7,然后用和除以 10 的余数取代该数字 d=rem(d+7,10); %该位数字加 7,然后用和除以 10 的余数取代该数字 e=rem(e+7,10); %该位数字加 7,然后用和除以 10 的余数取代该数字 g=c;c=e;e=g; %将第一位和第三位交换 g=b;b=d;d=g; %将第二位和第四位交换 a=1000*b+100*c+10*d+e; %a 为加密后的整数 disp(['加密后:', num2str(a)]) 2. 分别用 if 语句和 switch 语句实现以下计算,其中 a,b,c 的值从键盘输入。 ⎧ ⎪ax 2 + bx + c, 0.5 ≤ x < 1.5 ⎪ ⎪ y = ⎨a sin c b + x, 1.5 ≤ x < 3.5 ⎪ c ⎪ln b + , 3.5 ≤ x < 5.5 x ⎪ ⎩ 答:程序设计: (1) 用 if 语句来实现: clear all; close all; clc; a=input('请输入 a: '); b=input('请输入 b: '); c=input('请输入 c: '); for x=0.5:1:5.5 if x>=0.5 & x<1.5 y=a.*(x.^2)+b.*x+c elseif x>=1.5 & x<3.5 y=a*(sin(b)^c)+x elseif x>=3.5 & x<5.5

MATLAB程序设计教程

MATLAB程序设计教程

MATLAB程序设计教程MATLAB程序设计教程本文档旨在向初学者介绍MATLAB程序设计的基础知识和技巧。

从安装MATLAB开始,到编写简单的程序和函数,再到更高级的数据处理和图形绘制技巧,我们会逐步深入讲解,以帮助读者掌握MATLAB编程的基本概念和技术。

第一章安装MATLAB- MATLAB的和安装步骤- 注册MATLAB账号- 软件环境需求第二章 MATLAB基础知识- MATLAB界面概览- 基本操作和快捷键- 变量和数据类型- 向量和矩阵运算- 控制流程语句第三章编写简单的程序- 编辑和运行脚本文件- 使用注释和帮助文档- 变量和运算符- 用户输入和输出- 错误处理第四章 MATLAB函数- 函数的定义和调用- 函数输入和输出- 匿名函数- 递归函数第五章数据处理和分析- 数据加载和保存- 矩阵操作和线性代数- 统计和概率分析- 插值与拟合- 数据可视化第六章图形绘制- 2D和3D绘图函数- 坐标轴设置和标签- 图例和颜色设置- 动态图形第七章高级技巧与应用- 调试和优化MATLAB代码- 编写自定义工具箱- 与其他编程语言的交互- 并行计算和分布式计算- MATLAB的工程应用本文档涉及附件:附件1、示例程序代码附件2、数据集样本本文所涉及的法律名词及注释:1.版权:指文学、艺术、音乐、电影、软件等创造性作品的独占权。

2.许可证:指授权他人使用自己拥有的知识产权的合法证明文件。

3.商标:指为区别同一种类商品和服务的商家而使用的标志、名称或字词等。

第 4 章 神经计算基本方法(BP神经网络MATLAB仿真程序设计)例子

第 4 章 神经计算基本方法(BP神经网络MATLAB仿真程序设计)例子
44
BP网络应用实例
x=imread(m,’bmp’); bw=im2bw(x,0.5); 为二值图像 [i,j]=find(bw==0); )的行号和列号 imin=min(i); )的最小行号 imax=max(i); )的最大行号 %读人训练样本图像丈件 %将读人的训练样本图像转换 %寻找二值图像中像素值为0(黑
4
BP网络学习算法
图5.5具有多个极小点的误差曲面
5
BP网络学习算法
另外一种情况是学习过程发生振荡,如图5.6所示 。 误差曲线在m点和n点的梯度大小相同,但方向相反 ,如果第k次学习使误差落在m点,而第k十1次学习 又恰好使误差落在n点。 那么按式(5.2)进行的权值和阈值调整,将在m 点和n点重复进行,从而形成振荡。
图 5.16
待分类模式
20
BP网络应用实例
解(1)问题分析 据图5.16所示两类模式可以看出,分类为简单的非 线性分类。有1个输入向量,包含2个输入元素;两 类模式,1个输出元素即可表示;可以以图5.17所 示两层BP网络来实现分类。
图 5.17
两层BP网络
21
BP网络应用实例
(2)构造训练样本集
6
BP网络学习算法
图5.6学习过程出现振荡的情况
7
BP网络的基本设计方法
BP网络的设计主要包括输人层、隐层、输出层及各 层之间的传输函数几个方面。 1.网络层数 大多数通用的神经网络都预先确定了网络的层数,而 BP网络可以包含不同的隐层。
8
BP网络的基本设计方法
但理论上已经证明,在不限制隐层节点数的情况下 ,两层(只有一个隐层)的BP网络可以实现任意非 线性映射。 在模式样本相对较少的情况下,较少的隐层节点, 可以实现模式样本空间的超平面划分,此时,选择 两层BP网络就可以了;当模式样本数很多时,减小 网络规模,增加一个隐层是必要的,但BP网络隐层 数一般不超过两层。

第四章 MATLAB程序设计

第四章 MATLAB程序设计

第二节 选择结构
2.1 if 语句
在MATLAB中,if 语句有三种格式
1、单分支if 语句
语句格式为: if 条件 语句组 end 当逻辑表达式的值为真时,执行该结 构中的执行语句,执行完之后继续向 下进行;若为假,则跳过结构中的内 容,向下执行。
实例分析
例4.4 当x是整数矩阵时,输出x的值。
程序3:
x=input('输入x='); y=cos(x+1)+sqrt(x*x+1);
u=cos(x+1);
v= sqrt(x*x+1); y=u+v end if x~=10
if x~=10
y=x*sqrt(x+sqrt(x));
end
y
y=x*sqrt(x+sqrt(x))
end
第二节 选择结构
if 条件1 语句组1 elseif 条件2 语句组2 …… elseif 条件m 语句组m else if-elseif的执行方式为:如果逻辑表达式1 的值为真,则执行语句1;如果为假,则判 语句组m+1 断逻辑表达式2,如果为真,则执行语句2, end 否则向下执行。
3、多分支if语句
实例分析
y
实例分析
例4.11 求
ye
0.5 x
sin( x

6
)
定积分。
a=0;b=3*pi;n=1000; h=(b-a)/n; x=a:h:b; f=exp(-0.5*x).*sin(x+pi/6);
for i=1:n
s(i)= (f(i)+f(i+1))*h/2; end s=sum(s)

第4章MATLAB程序设计

第4章MATLAB程序设计

第4章MATLAB程序设计在当今科技飞速发展的时代,计算机编程成为了许多领域中不可或缺的工具。

而 MATLAB 作为一款功能强大的数学计算和编程软件,在科学研究、工程设计、数据分析等众多领域都发挥着重要的作用。

MATLAB 具有丰富的函数库和简洁易懂的语法,这使得它对于初学者来说相对容易上手。

它提供了直观的操作界面,让用户能够轻松地进行各种复杂的计算和绘图。

在 MATLAB 程序设计中,变量的定义和使用是基础。

变量可以存储各种类型的数据,如数值、字符串、数组等。

与其他编程语言类似,变量的命名需要遵循一定的规则,通常使用有意义的名称能够提高程序的可读性。

比如,我们要计算一个圆形的面积,就可以定义半径变量`r` ,然后通过公式`S = pi r^2` 来计算面积。

在这个简单的例子中,清晰的变量名`r` 让人一眼就能明白它代表的是半径。

数组是 MATLAB 中常用的数据结构之一。

它可以是一维的、二维的甚至多维的。

通过数组,我们能够方便地处理大量相关的数据。

例如,要存储一个班级学生的成绩,我们可以创建一个一维数组来存放每个学生的分数。

而如果要表示一个矩阵,比如一个图像的像素值,就可以使用二维数组。

控制流语句在 MATLAB 程序中也非常重要。

像`ifelse` 语句用于条件判断,根据不同的条件执行不同的代码块。

假设我们要判断一个数是奇数还是偶数,就可以使用以下代码:```matlabnum = 5;if mod(num, 2) == 0disp('偶数');elsedisp('奇数');end````for` 循环用于重复执行一段代码特定的次数,而`while` 循环则在条件为真时持续执行。

函数的定义和调用是 MATLAB 程序设计中的重要环节。

通过将一段具有特定功能的代码封装成函数,可以提高代码的复用性和可读性。

例如,我们定义一个计算阶乘的函数:```matlabfunction result = factorial(n)if n == 0 || n == 1result = 1;elseresult = n factorial(n 1);endend```在需要计算阶乘的时候,直接调用这个函数就可以得到结果。

MATLAB程序设计基础教程(刘国良)-第4章

MATLAB程序设计基础教程(刘国良)-第4章

函数

第4章 M脚本与M函数
2.脚本M文件 脚本文件也叫命令文件,是独立执行的文件,它不接受输 入参数,不返回任何值,而是代码的结合,该方法允许用户将 一系列MATLAB命令输入到一个简单的脚本“.m”文件中,只 要在MATLAB命令窗口中执行该文件,则会依次执行该文件中 的命令。 脚本M文件中包含一族由MATLAB语言所支持的语句,它类 似于DOS下的批处理文件,它的执行方式很简单,用户只需在 MATLAB 的提示符“>>”下键入该M文件的文件名,这样 MATLAB就会自动执行该M文件中的各条语句,并将结果直接返 回到MATLAB 的工作空间。
第4章 M脚本与M函数
3.块注释 在 MATLAB 5以前的版本中,注释是逐行进行的,采用百 分号(%)进行标记。逐行注释不利于用户增加和修改注释内容。 在MATLAB 5及以后的版本中,用户可以使用“%{”和“%}” 符号进行块注释,“%{”和“%}”分别代表注释块的起始和 结束。
第4章 M脚本与M函数
第4章 M脚本与M函数
在使用脚本文件时需要注意一点:如果当前工作区中存在 与该脚本同名的变量,则当输入该文件名时,系统将其作为变 量名执行。
MATLAB中有一个专门用于寻找“.m”文件的路径搜索器。 “.m”文件是以目录和文件夹的方式分布于文件系统中的,一 部分“.m”文件的目录是MATLAB的子目录,由于MATLAB的一 切操作都是在它的搜索路径,包括当前路径中进行的,因此如 果调用的函数在搜索路径之外,MATLAB就会认为此函数不存 在。
第4章 M脚本与M函数
4.1.2 M文件的建立、运行与命名规则 M文件的语法类似于一般高级语言,是一种程序化的编程
语言,但是与传统的高级语言相比,M文件又有其特点。它只 是一个简单的ASCII码型文本文件,因此,它的语法比一般的 高级语言要简单,程序也容易调试,并具有很好的交互性。

第4章 MATLAB程序流程控制_习题答案

第4章  MATLAB程序流程控制_习题答案

第4章 MATLAB程序流程控制习题4一、选择题1.下列关于脚本文件和函数文件的描述中不正确的是()。

A A.函数文件可以在命令行窗口直接运行B.去掉函数文件第一行的定义行可转变成脚本文件C.脚本文件可以调用函数文件D.函数文件中的第一行必须以function开始2.下列程序的输出结果是( )。

Dy=10;if y==10y=20;elseif y>0y=30enddisp(y)A.1 B.30 C.10 D.203.有以下语句:a=eye(5);for n=a(2:end,:)for循环的循环次数是()。

CA.3 B.4 C.5 D.104.设有程序段k=10;whilekk=k—1end则下面描述中正确的是()。

AA.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次5.有以下程序段:x=reshape(1:12,3,4);m=0;n=0;for k=1:4if x(:,k)<=6m=m+1;elsen=n+1;endend则m和n的值分别是()。

CA.6 6 B.2 1 C.2 2 D.1 26.调用函数时,如果函数文件名与函数名不一致,则使用()。

A A.函数文件名B.函数名C.函数文件名或函数名均可D.@函数名7.如果有函数声明行为“function [x,y,z]=f1(a,b,c)”,则下述函数调用格式中错误的是()。

BA.x=f1(a,b,c) B.[x,y,z,w]=f1(a,b,c)C.[x,b,z]=f1(a,y,c) D.[a,b]=f1(x,y,z)8.执行语句“fn=@(x)10*x;",则fn是()。

AA.匿名函数B.函数句柄C.字符串D.普通函数9.执行下列语句后,变量A的值是( )。

D>> f=@(x,y) log(exp(x+y));〉〉 A=f(22,3);A.22,3B.22 C.3 D.2510.程序调试时用于设置断点的函数是()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章 Matlab 程序设计
3 循环结构
(1) for语句
格式
for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 说明: 1. 表达式1的值为循环变量的初值,表达式2的值为步长,表 达式3的值为循环变量的终值。 2. 步长为1时,表达式2可以省略。
第四章 Matlab 程序设计
第四章 Matlab 程序设计
主要内容:
4.1 4.2 4.3 4.4 M文件 Matlab的程序结构 Matlab文件操作 Matlab程序设计
第四章 Matlab 程序设计
matlab的工作模式
指令驱动模式 通常matlab以指令驱动模式工作,即在matlab 窗 口下当用户输入单行指令时,matlab 立即处理这条指 令,并显示结果,这就是matlab命令行模式。 命令行模式操作时,matlab窗口只允许一次执行一 行上的一个或几个语句。 1 在matlab窗口输入数据和命令进行计算时,当处理 复杂问题和大量数据时是不方便的。 命令行方式程序可读性差,而且不能存储,对于复杂 的问题,应编写成能存储的程序文件。
说明: 1. 输出格式控制同c语言 2. 输出项可以是变量或表达式
x=pi;m=2; sprintf('x1=%f x2=%4.3f\n x3=%10.9f', (1+sqrt(5))/2,x,pi) sprintf(‘%d’,round(x)) %舍为最接近的整数 sprintf('%s','hello') S=sprintf('The array is %dx%d.',m,3) ; disp(S)
m文件有两类 1.脚本文件(Script File) : 独立的m文件 2.函数文件(Function File): 可调用的m文件
脚本文件是一串matlab命令的集合,完成制定的功能,变量空间是 workspace; 函数文件是一个黑箱,根据输入作出输出,变量空间是独立的函数变量空间, 在函数运行完成后关闭。
格式 [A,COUNT]=fread(fid,size, precision)
第四章 Matlab 程序设计
写二进制文件
格式
COUNT=fwrite (fid, A, precision)
说明: 1. COUNT返回所写的数据元素个数。 2. fid为文件句柄。 3. A用来存放写入文件的数据,
4. precision用于控制所写数据的类型,其形式与fread函数相同。
第四章 Matlab 程序设计
(2) switch语句 switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 …… case 表达式m 语句组m otherwise 语句组n end
说明: 1. 当表达式的值等于表达式1的值 时,执行语句组1。 2. 当表达式的值等于表达式m的值 时,执行语句组m。 3. 当表达式的值不等于case所列的 表达式的值时,执行语句组n。 4. 当任意一个分支的语句执行完后, 直接执行switch语句的下一句。
第四章 Matlab 程序设计
2 m文件模式 m文件是matlab所特有的使用该语言编写的磁盘文 件。 将matlab语句构成的程序存储成以m为扩展名的文 件,然后再执行该程序文件,这种工作模式称为程序文 件模式。
程序文件不能在指令窗口下建立,因为指令窗口只允 许一次执行一行上的一个或几个语句。
第四章 Matlab 程序设计
clear x=0:0.1:2*pi; fid=fopen(′example.mat′,′wb+′) count=fwrite(fid,x,′float′) fclose(fid) fid1=fopen(′example.mat′,′rb+′) t=fread(fid1,′float′);
y=[t,sin(t)];
第四章 Matlab 程序设计
(2)文本文件的读写操作 读文本文件 格式 A= fscanf (fid, format) [A,COUNT]= fscanf (fid, format, size) 说明: 1. A用以存放读取的数据。
2. COUNT返回所读取的数据元素个数。fid为文件句柄。
3. format用以控制读取的数据格式,由%加上格式符组成,常 见的格式符有%d,%f,%e,%c,%s等。 4. size为可选项,决定矩阵A中数据的排列形式。
第四章 Matlab 程序设计
2 文件的读写操作
文件数据格式有两种形式,一是二进制文件,二是文本文件。对不 同类型的文件读写是不同的。
(1)二进制文件的读写操作
读二进制文件 说明:
1. A用于存放读取的数据。
2. COUNT返回所读取的数据元素个数 3. fid为文件句柄 4. precision代表读写数据的类型:′int′ ′float′ ′char′等 5. size为可选项,若不选用则读取整个文件内容,若选用则它的值可以是下列 值: (1) N表示读取 N个元素到一个列向量。 (2) [M,N]表示读数据到M×N的矩阵中,数据按列存放。
4.1 M文件
m文件的语法类似于c语言,但又有其自身特点。它 只是一个简单的ASCII码文本文件,执行程序时逐行解释 运行程序,matlab是解释性的编程语言。 m文件可以使用系统认可的文本文件编辑器来建立m 文件。如dos下的edit,windows的记事本和word等。常用 且最为方便的是使用MATLAB提供的文本编辑器。
文件内容或建立一个新文件,读写;′a′表示在打开的文件末尾添加数据。
3. fid用于存储文件句柄值,句柄值用来标识该数据文件,其它函数可以利用 它对该数据文件进行操作。
第四章 Matlab 程序设计
(2)文件的关闭
格式
sta=fclose(fid)
说明:
该函数关闭fid所表示的文件。sta表示关闭文件操 作的返回代码,若关闭成功,返回0,否则返回–1。
第四章 Matlab 程序设计
写文本文件
格式
COUNT= fprintf(fid, format, A)
说明:
1. A存放要写入文件的数据。
2. 先按format指定的格式将数据矩阵A格式化,然后写入 到fid所指定的文件。格式符与fscanf函数相同。
第四章 Matlab 程序设计
例4.5 文件的操作
第四章 Matlab 程序设计
例4.3 求一元二次方程ax^2 +bx+c=0的根。 %解一元二次方程 %a b c方程系数 %x1 x2为方程的根 disp('pls input a b c') a=input('a='); b=input('b='); c=input('c='); d=b*b-4*a*c; x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); disp('x1 x2 is') disp([x1,x2]) disp(sprintf('x1=%8.5f\nx2=%8.5f',x1,x2))
格式
b 双分支if语句:
格式
if 条件 语句组 end
if 条件 语句组1 else 语句组2 end
第四章 Matlab 程序设计
2 选择结构
(1) if语句 c 多分支if语句
格式
if 条件1 语句组1 elseif 条件2 语句组2 …… elseif 条件m 语句组m else 语句组n end
end
break end n
第四章 Matlab 程序设计
1 文件的打开与关闭
(1) 文件的打开
格式
说明:
fid= fopen(文件名,打开方式)
1. 其中文件名用字符串形式,表示待打开的文件。
2. 常见的打开方式有:′r′表示对打开的文件读数据;′r+′表示读写;′w′删除已 经存在的文件内容或建立一个新文件,并打开文件写;′w+′删除已经存在的
第四章 Matlab 程序设计
例4.2 求圆的周长和面积
peri_area.m
function [l s]=peri_area(r) %计算圆的周长和面积 l=2*pi*r; %周长 s=pi*r.^2; %面积
只有一句注释时
有多句注释时
第四章 Matlab 程序设计
4.2 Matlab的程序结构
第四章 Matlab 程序设计
(2) 数据的输出 disp 函数
调用格式
disp(输出项)
说明: 1. 输出项可以是变量或字符串。 2. 输出变量时,不显示变量名。
第四章 Matlab 程序设计
sprintf 函数:字符串格式化命令 主要功能是把格式化的数据写入某个字符串中
调用格式
S=sprintf(格式,输出项)
例4.1 绘制sin(x)*cos(x)图形
a.m
%绘制sin(x)*cos(x)图形 x=0:0.1:4*pi; y=sin(x).*cos(x); plot(x,y)
%注释部分,用以说明函数的作用及 有关内容,使用help命令时显示。只 显示程序中的第一句注释语
第四章 Matlab 程序设计
2 函数文件
控制跳过循环体中的某些语句。当在循环体内执行 到该语句时,程序将跳过循环体中所有剩下的语句,继 续下一次循环。
第四章 Matlab 程序设计
例4.4 求[100,200]之间第一个能被21整除的整数。 %计算100~200之间第一个能被21整除的整数 for n=100:200 if rem(n,21)~=0 continue %rem(x,y) :计算x./y的余数
第四章 Matlab 程序设计
相关文档
最新文档