当前位置:文档之家› MATLAB程序设计

MATLAB程序设计

MATLAB程序设计
MATLAB程序设计

第三章MATLAB程序设计-1

主要内容:

(1)M文件

(2)程序结构

(3)程序流程控制

1、M文件

1.1 M文件概述

(1)Script 脚本文件:注意文件命名要符合规则必须以字母为首,否则在命令行不能运行;

(2)Function 函数文件:以Function引导的定义语句作为文件首的文件,且文件名必须与函数名相同;

1.2 脚本文件

(1)指令

(2)注释: 注释一句语句:%;

注释语句块:%{

%}

(3)变量:

脚本文件中的变量为全局变量,一旦生成在工作空间中存在,即使程序运行结束依然存在除非用clear删除

(4)例程

详见文件C3_1.m

%例3_1

angle=-pi:0.01:pi;

dp(1,:)=3+sin(10*angle).^2;

polar(angle,dp(1,:));%help polar

%例3_2

x=-2*pi:0.05:2*pi;

y=sin(x);

plot(x,y);

legend('正弦函数曲线');

1.3 函数文件的定义、调用和参数传递

1.3.1 函数文件

1、定义格式:

function [返回变量列表]=函数名(输入变量列表) %注释

输入、返回变量格式的检测

函数体语句

2、nargin、nargout:函数调用时自动生成的两个变量,分别描述输入、输出变量的实际个数;

3、help命令,可显示注释行信息;

4、函数文件遵循的规则:

(1)函数名必须和文件名相同;

(2)函数文件有输入和输出参数;(也不必须,区别于脚本文件)例test.m

(3)函数文件可以有0个或多个输入、输出变量。但不能多于定义的变量个数;

(4)函数文件中的变量(除了输入、输出变量)有自己的工作空间,除非特别申明(global),否则全为局部变量,函数执行完退出,变量也相应结束生命周期;

1.4 数据的导入和导出

(1)数据导入、导出

导入:磁盘文件、剪贴板数据->MATLAB工作空间;

导出:MATLAB空间变量->磁盘

(2)导入、导出文件格式:二进制文件、文本文件、图形文件、音频或视频文件、电子数据表、剪贴板数据、Internet信息

(3)导入方法:导入函数、工具箱

1.4.1 导入向导

(1)[File]->[Import Data…]

(2)命令行:uiimport –file

(3)从剪贴板导入数据:[Edit]->[Paste pastespecial]

(4)命令行:uiimport –pastespecial

1.4.2 导入导出MAT文件

(1)save:将工作空间中的变量导出为二进制或者ASCII文件save filename %保存工作空间中的所有变量到文件中

save filename var1 var2…%保存指定变量到文件,可使用通配符’*’

save filename –struct structname %将结构体的各个域单独存放,没有struct说明则作为整体保存

whos –file filename %查看文件中保存的变量

(2)load:将二进制或者ASCII文件导入到工作空间

load filename %将文件中的所有变量导入空间

load filename var1 var2 …%将指定变量导入空间

S=load(filename.mat) %将结构体导入

1.4.3 导入导出图形文件

(1)imread:将图形文件导入空间,支持TIFF、JPEG、PNG、GIF 格式;

(2)imwrite:将空间中的图形存成文件

1.4.4 导入导出音频视频文件

(1)auread、aviread、wavread:读取声音文件、avi视频文件和wave 声音;

(2)auwrite、wavwirte、avifile:导出声音、wav文件、视频文件

1.4.5 导入导出电子数据表

支持Excel数据表。

(1)xlsread:从excle读入数据

(2)xlswrite:将空间中的变量写入excel文件

例:C3_1.m

%导入导出excel数据

d={'time','temp';13 100;12 34;14 35}

xlswrite('temp.xls',d,'temp','E1')

xlsread('temp.xls','temp')

2、程序结构

2.1 顺序结构

语句顺序执行。例3-35

2.2 循环结构

2.2.1 for循环

例3-36、37 C3_1.m

%例3_36 for 循环

for i=1:10

x=i^2;

end

x

%例3_37 for循环嵌套

m=3;n=4;

for i=1:m

for j=1:n

a(i,j)=1/(i+j-1);

end

end

format rat

2.2.2 while循环(重复执行直到循环条件为假)

例3-38 C3_1.m

A=rand(3);

E=0*A;

F=eye(size(A));

N=1

while norm(E+F-E)>0

E=E+F;

F=A*F/N;

N=N+1;

end

2.3 分支结构

2.3.1 if、else、elseif语句

例3-39 bspline.m

function f=bspline(x)

if x<0

f=0;

elseif x<1

f=x;

elseif x<2

f=2-x;

else

f=0;

end

例3-40 collatz.m

function c=collatz(n)

c=n;

while n>1

if rem(n,2)==0

n=n/2;

else

n=3*n+1;

end

c=[c,n];

end

2.3.2 switch语句

switch

case 数值(或字符串)条件语句1

执行语句1

case 数值(或字符串)条件语句2

执行语句2

otherwise

执行语句N

end

注意:MATLAB只执行第一个检查成功的case,无须break;

2.4 程序终止控制-return

例3-42 见文件C3_1.m

clear

clc

n=input('input a number:');

if n<0

disp('negative number');

return;

end

disp('codom after return');

2.5 程序异常处理

try

表达式1,表达式2…

catch

表达式1,表达式2…

end

说明:try中的语句一旦出现错误,则执行catch语句,否则catch语句不

被执行,另外,可以用lasterr检查最后发生的错误信息

例3-43 见文件C3_1.m

A=[1 2 2

2 2 2];

B=[1 2

1 2];

try

A'

A+A

A+B

A*B

catch

disp('there is error:'),disp(lasterr);

end

3、程序流程控制

3.1 echo

(1)对指令文件

echo on %显示其后所有执行的指令文件指令

echo off %其后所执行的指令文件指令不被显示

echo %上述两种状态间转换

(2)对函数文件

echo filename in %使指定文件在执行时执行的指令被显示出来

echo filename off %使指定文件在执行时执行的指令不被显示出来

echo filename %使指定文件在执行时切换指令的显示状态

echo on all %使所有文件在执行时执行的指令被显示出来

echo off all %使所有文件在执行时执行的指令不被显示出来

3.2 input

等待用户键盘输入。

(1)a=input(‘please input a number:’);可输入数字、表达式、字符串;

(2)a=input(‘please input a number:’,’s’);用户输入内容一律当做字符串;

3.3 pause

暂停程序,任意键继续。

pause

pause(n)

3.4 keyboard

程序暂停执行,执行命令行指令,执行完return返回

例见文件C3_1.m

disp('work before keyboard');

keyboard

disp('work after keyboard');

3.5 break

与C语言中的break一样,终止当前层的循环。

例3-44 见文件C3_1.m

i=1;

while 1

if((rem(100-i*2,4)==0)&((i+(100-i*2)/4)==36))

break

end

i=i+1;

end

a1=i*2

a2=100-i*2

3.6 try…catch…end

【练习1】写一个脚本文件,实现计算键盘输入的两个变量的和; 【练习2】写一个脚本文件,用for循环结构计算1~100的求和结果;

【练习3】创建excel表格数据,在脚本文件中将其导入,并计算表格中所有数据的和;

MATLAB编程作业

《Matlab 编程训练》 作业 专 业 学生姓名 班级 学 号 指导教师 完成日期

实训一 MATLAB 语言介绍和数值计算 1.先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存变量。 12 2sin851z e =+ . 2. 已知 1234413134787,2033657327A B --???? ????==???? ????-???? ,求下列表达式的值: (1) A+6*B 和A-B+I (其中I 为单位矩阵) A+6*B:

A-B+I: (2)A*B和A.*B A*B程序: A=[12 34 -4;34 7 87;3 65 7] B=[1 3 -1;2 0 3;3 -2 7] c=A*B 结果: A.*B程序: A=[12 34 -4;34 7 87;3 65 7] B=[1 3 -1;2 0 3;3 -2 7] D=A.*B 结果:

(3)A^3和A.^3 A^3程序: A=[12 34 -4;34 7 87;3 65 7] E=A^3 结果: A.^3程序: A=[12 34 -4;34 7 87;3 65 7] C=A.^3 (4)A/B及B\A A/B程序: A=[12 34 -4;34 7 87;3 65 7] B=[1 3 -1;2 0 3;3 -2 7] C=A/B 结果:

B\A程序: A=[12 34 -4;34 7 87;3 65 7] B=[1 3 -1;2 0 3;3 -2 7] D=B\A 结果: (5)将矩阵C=B\A的右下角2*2子矩阵赋给D, 并(3)保存变量(mat文件)程序: A=[12 34 -4;34 7 87;3 65 7]; B=[1 3 -1;2 0 3;3 -2 7]; C=B*inv(A); D=C(2:3,2:3) 结果:

MATLAB程序设计教程(第二版)课后答案(可编辑修改word版)

MATLAB 第二版课后答案unit3-8 unit3 实验指导 1、 n=input('请输入一个三位数:'); a=fix(n/100); b=fix((n-a*100)/10); c=n-a*100-b*10; d=c*100+b*10+a 2(1) n=input('请输入成绩'); switch n case num2cell(90:100) p='A'; case num2cell(80:89) p='B'; case num2cell(70:79) p='C'; case num2cell(60:69) p='D'; otherwise p='E'; end price=p (2)n=input('请输入成绩'); if n>=90&n<=100 p='A'; elseif n>=80&n<=89 p='B'; elseif n>=70&n<=79 p='C'; elseif n>=60&n<=69 p='D'; else p='E'; end price=p (3)try n; catch price='erroe' end 3 n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6];

b=n(1); for m=2:20 if n(m)>a a=n(m); elseif n(m)=0 disp(A([n],:)); elseif n<0 disp(lasterr); else disp(A([6],:)); disp(lasterr); end 7(1) f=[];

Matlab程序设计打印版

实验四 Matlab程序设计 [实验目的] 1.掌握字符串数组的创建和构造方法及常用字符串函数的使用。 2.熟练掌握MATLAB 控制流的使用方法。 3.熟悉M 脚本文件、函数文件的编写方法和技巧。 [实验原理] 与数值数组相比,串数组在MATLAB 中的重要性较小,但不可缺少。如果没有串数组及相应的操作,那么数据可视化、图形用户界面的制作将会遇到困难。字符串与数值数组是两种不同的数据类,它们的创建方式也不同。字符串的创建方式是:将待建的字符放在“单引号对”中。注意,“单引号对”必须是在英文状态下输入,其作用是MATLAB 识别送来内容“身份”所必需的,如A=’This is an example!’;就创建了一个字符串A。注意创建带单引号的字符串时,每个单引号符用“连续2 个单引号符”标识。字符串的标识同数值数组同,而且也可以使用size 指令观察串数组的大小。串数组的ASCII 码可以通过指令abs 和double 来获取,而用char 指令可以把ASCII 码变为串数组,另外,MATLAB 可以很好的支持中文字符串数组。对于复杂串数组的创建,一是可以直接创建,但是要保证同一串数组的各行字符数相等,即保证各行等长,不推荐,太繁琐。二是可以利用串操作函数创建多行数组,比如char, str2mat, strvcat 等,具体操作自己通过帮助体会。另外还可以通过转化函数产生数码字符长,比如A_str=int2str(A) 就是把整数数组A 转换成串数组,如果是非整数将被四舍五入后再转换,类似的函数还有num2str(把非整数数组转换为串数组,常用于图形中数据点的标识)、mat2str(把数值数组转换成输入形态的串数组,常与eval 指令配用)。 假如想灵活运用MATLAB 去解决实际问题,想充分调动MATLAB——科学技术资源,想理解MATLAB 版本升级所依仗的基础,那么掌握M 脚本文件合函数的编写规则将十分有用。 用户通过本次实验,感受抽象概念的内涵、各指令间的协调,从感知上领悟MATLAB 编程的优越和要领。 编写M 脚本文件的步骤:

MATLAB程序设计作业

Matlab程序设计 班级 姓名 学号

《MATLAB程序设计》作业 1、考虑如下x-y 一组实验数据: x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] y=[1.2, 3, 4, 4, 5, 4.7, 5, 5.2, 6, 7.2] 分别绘出plot的原始数据、一次拟合曲线和三次拟合曲线,给出MATLAB代码和运行结果。 代码如下: x=[1,2,3,4,5,6,7,8,9,10]; y=[1.2,3,4,4,5,4.7,5,5.2,6,7.2]; plot(x,y); title('原始数据'); p=polyfit(x,y,1); q=polyval(p,x); figure,plot(x,q); title('一次拟合'); p=polyfit(x,y,2); q=polyval(p,x); figure,plot(x,q); title('二次拟合'); 运行结果如下:

1 2 3 4 5 6 7 8 9 10 12 3 4 5 6 7 8 原始数据 123 456789 102 2.5 3 3.54 4.5 55.56 6.57一次拟合 123456789 101 2 3 4 5 6 7 二次拟合 2、在[0,3π]区间,绘制y=sin(x)曲线(要求消去负半波,即(π,2π)区间内的函数值置零),求出曲线y 的平均值,以及y 的最大值及其最大值的位置。给出执行代码和运行结果。 代码如下: clear clc x=(0:0.01:3*pi); y=sin(x); plot(x,y); y1=(y>=0).*y; figure,plot(x,y1);

MATLAB程序设计教程课后答案

实验指导 1、 n=input('请输入一个三位数:'); a=fix(n/100); b=fix((n-a*100)/10); c=n-a*100-b*10; d=c*100+b*10+a 2(1) n=input('请输入成绩'); switch n case num2cell(90:100) p='A'; case num2cell(80:89) p='B'; case num2cell(70:79) p='C'; case num2cell(60:69) p='D'; otherwise p='E'; end price=p (2)n=input('请输入成绩'); if n>=90&n<=100 p='A'; elseif n>=80&n<=89 p='B'; elseif n>=70&n<=79 p='C'; elseif n>=60&n<=69 p='D'; else p='E'; end price=p (3)try n; catch price='erroe' end 3 n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6]; a=n(1);

for m=2:20 if n(m)>a a=n(m); elseif n(m)=0 disp(A([n],:)); elseif n<0 disp(lasterr); else disp(A([6],:)); disp(lasterr); end 7(1) f=[]; for n=1:40

matlab程序设计第三章课后习题答案

1. p138 第6题在同一坐标轴中绘制下列两条曲线并标注两曲线交叉点。 >> t=0:0.01:pi; >> x1=t; >> y1=2*x1-0.5; >> x2=sin(3*t).*cos(t); >> y2=sin(3*t).*sin(t); >> plot(x1,y1,'r-',x2,y2,'g-') >> axis([-1,2,-1.5,1]) >> hold on >> s=solve('y=2*x-0.5','x=sin(3*t)*cos(t)','y=sin(3*t)*sin(t)'); >> plot(double(s.x),double(s.y),'*'); 截图:

p366 第4题绘制极坐标曲线,并分析对曲线形状的影响。 function [ output_args ] = Untitled2( input_args ) %UNTITLED2 Summary of this function goes here % Detailed explanation goes here theta=0:0.01:2*pi; a=input('请输入a的值:'); b=input('请输入b的值:'); n=input('请输入n的值:'); rho=a*sin(b+n*theta); polar(theta,rho,'k'); end 下面以a=1,b=1,n=1的极坐标图形为基础来分析a、b、n的影响。

对a的值进行改变:对比发现a只影响半径值的整倍变化 对b的值进行改变:对比发现b的值使这个圆转换了一定的角度

对n的值进行改变:对比发现当n>=2时有如下规律 1、当n为整数时,图形变为2n个花瓣状的图形 2、当n为奇数时,图形变为n个花瓣状的图形 分别让n为2、3、4、5

MATLAB程序设计教程(第二版)第三章实验报告下载

大学社区网收集整理https://www.doczj.com/doc/6316761226.html, 评分 日期湖南商学院北津学院实验报告 课程名称MATLAB科学计算编程语言 实验名称MATLAB程序设计 专业班级信科1121班 姓名xxx 学号xxx 实验日期2012年11月5日 2012—2013学年度第一学期 一、实验目的 1.掌握利用if语句、switch语句实现选择结构的方法。 2.掌握利用for语句、while语句实现循环结构的方法。 3.熟悉利用向量运算来代替循环操作的方法并理解MATLAB程序设计的特点 4.掌握定义和调用MATLAB函数的方法。

二、实验环境 系统windows7旗舰版 处理器Intel(R)Core(TM)i7-3610M CPU @ 2.30GHz 安装内存 4.00GB (3.07GB 可用)系统类型64位操作系统运行环境 MATLAB 5.3 三、实验基本原理 利用上课所学知识解决以下问题: 1.从键盘输入一个3位数的整数,将它反向输出。如输入639,输出936。 2.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。 要求: (1)分别用if 语句和switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。3.输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB 的max 函数、min 函数来实现。 4.23.0ln )3.0sin(23.03.0a a e e y a a +++?=?,当a 取-3.0、-2.9、-2.8、…、2.8、2.9、 3.0时,求各点的函数值。要求分别用顺序结构和循环结构实现。 5.当n 分别取100、1000、10000时,求下列各式的值: (1)) 6...(n 1...31211122222π=+++++(2)) 2...()12)(12()2)(2(...756653443122π =??? ?????+?????????××????????××????????××n n n n 要求分别用循环结构和向量运算(使用sum 函数)来实现。 6.建立5×6矩阵,要求输出矩阵第n 行元素。当n 值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。 7已知,o999 ) 20()30()40(f f f y += (1)当)5ln(10)(2 ++=n n n f 时,y 的值是多小。 (2)当+×+×+×=433221)(n f …+)1(+×n n 时,y 的值是多小。 8.先用函数的递归调用定义一个函数文件求 ∑=n i m i 1,然后调用该函数文件求

实验二--MATLAB程序的设计(含实验报告)

实验二 MATLAB 程序设计 一、 实验目的 1.掌握利用if 语句实现选择结构的方法。 2.掌握利用switch 语句实现多分支选择结构的方法。 3.掌握利用for 语句实现循环结构的方法。 4.掌握利用while 语句实现循环结构的方法。 5.掌握MATLAB 函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有MATLAB7.0以上的软件环境)。 M 文件的编写: 启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器(Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正 三、 实验容 1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因c b a 、、的不同取值而定),这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。并输入几组典型值加以检验。 (提示:提示输入使用input 函数) 2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。 要求:(1)用switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 (提示:注意单元矩阵的用法) 3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 2→1 3→10→5→16→8→4→2→1 6→3→10→5→16→8→4→2→1

实验4 Matlab程序设计1

实验4 Matlab 程序设计1 实验目的: 1、 掌握建立和执行M 文件的方法; 2、 掌握实现选择结构的方法; 3、 掌握实现循环结构的方法。 实验内容: 1. 从键盘输入一个4位整数,按如下规则加密后输出。加密规则:每位数字都加上7,然 后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。 2. 求分段函数的值。 ,x x x x y x x x x x x x ?+- <≠-?=-+ ≤<≠≠??-- ?2226035605231且且及其他 用if 语句实现,分别输出x=-5,-3,0,1,2,2.5,3,5时的y 值。 3. 输入一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E ,其中90~100分为A ,80~89 分为B ,70~79分为C ,60~69分为D ,60分以下为E 。 要求: (1) 分别用if 语句和swich 语句实现。 (2) 输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 4. 硅谷公司员工的工资计算方法如下: (1) 工作时数超过120小时者,超过部分加发15%; (2) 工作时数低于60小时者,扣发700元; (3) 其余按每小时84元计发。

试编程按输入的工号和该号员工的工时数,计算应发工资。 5.设计程序,完成两位数的加、减、乘、除四则运算。即:输入两个两位随机整数,再输 入一个运算符号,做相应的运算,并显示相应的结果。 6.建立5×6矩阵,要求输出矩阵的第n行元素。当n值超过矩阵的行数时,自动转为输 出矩阵的最后一行元素,并给出出错信息。 7.产生20个两位随机整数,输出其中小于平均数的偶数。 实验代码及实验结果 1. >> a=input('请输入一个四位整数:'); 请输入一个四位整数:9988 >> a1=fix(a/1000); >> a2=rem(fix(a/100),10); >> a3=rem(fix(a/10),10); >> a4=rem(a,10); >> a1=rem(a1+7,10); >> a2=rem(a2+7,10); >> a3=rem(a3+7,10); >> a4=rem(a4+7,10); >> b=a1;a1=a3;a3=b; >> b=a2;a2=a4;a4=b; >> c=a1*1000+a2*100+a3*10+a4; >> disp(c)

Matlab编程与应用习题和一些参考答案

Matlab 上机实验一、二 3.求下列联立方程的解???????=+-+-=-+=++-=--+4 1025695842475412743w z y x w z x w z y x w z y x >> a=[3 4 -7 -12;5 -7 4 2;1 0 8 -5;-6 5 -2 10]; >> b=[4;4;9;4]; >> c=a\b 4.设???? ??????------=81272956313841A ,??????????-----=793183262345B ,求C1=A*B’;C2=A’*B;C3=A.*B,并求上述所有方阵的逆阵。 >> A=[1 4 8 13;-3 6 -5 -9;2 -7 -12 -8]; >> B=[5 4 3 -2;6 -2 3 -8;-1 3 -9 7]; >> C1=A*B' >> C2=A'*B >> C3=A.*B >> inv(C1) >> inv(C2) >> inv(C3) 5.设 ?? ????++=)1(sin 35.0cos 2x x x y ,把x=0~2π间分为101点,画出以x 为横坐标,y 为纵坐标的曲线。 >> x=linspace(0,2*pi,101); >> y=cos(x)*(0.5+(1+x.^2)\3*sin(x)); >> plot(x,y,'r') 6.产生8×6阶的正态分布随机数矩阵R1, 求其各列的平均值和均方差。并求该矩阵全体数的平均值和均方差。 (mean var ) a=randn(8,6) mean(a) var(a) k=mean(a) k1=mean(k) i=ones(8,6) i1=i*k1 i2=a-i1 i3=i2.*i2 g=mean(i3) g2=mean(g)

Matlab程序设计教程(第二版)刘卫国课后参考答案解析

第二章 1 求下列表达式的值。 (1) w=sqrt(2)*(1+0.34245*10^(-6)) (2) a=3.5; b=5; c=-9.8; x=(2*pi*a+(b+c)/(pi+a*b*c)-exp(2))/tan(b+c)+a (3) a=3.32; b=-7.9; y=2*pi*a^(2)*[(1-pi/4)*b-(0.8333-pi/4)*a] (4) t=[2,1-3*i;5,-0.65]; z=1/2*exp(2*t)*log(t+sqrt(1+t^(2))) 2 求下列表达式 A=[-1,5,-4;0,7,8;3,61,7]; B=[8,3,-1;2,5,3;-3,2,0]; (1) A+6*B A^2-B+eye (2) A*B A.*B B.*A (3) A/B B\A (4) [A,B] [A([1,3],:);B^2] 3 根据已知,完成下列操作 (1) A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14]; K=find(A>10&A<25); A(K) (2) A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14]; B=A(1:3,:) C=A(:,1:2) D=A(2:4,3:4) E=B*C (3) E

f=input('输入一个数:','s'); f(end :-1:1) 2 用if语句 score=input('请输入成绩:'); if score>=90&&score<=100 disp('A'); elseif score>=80&&score<=89 disp('B'); elseif score>=70&&score<=79 disp('C'); elseif score>=60&&score<=69; disp('D'); elseif score<60&&score>=0; disp('E'); else disp('出错'); end 用switch语句 score=input('请输入成绩:'); switch fix(score/10) case {9,10} disp('A'); case {8} disp('B'); case {7} disp('C'); case {6} disp('D'); case {0,1,2,3,4,5} disp('E'); otherwise disp('出错'); end 第四章1题 1) X=0:10; Y=x-x.^3/6; P lot(x,y)

matlab程序设计例题及答案

1.编写程序:计算1/3+2/5+3/7+……+10/21 法一: s=0; for i=1:10 s=s+i/(2*i+1); end s s = 4.4096 法二: sum((1:10)./(3:2:21)) ans = 4.4096 2.编写程序:计算1~100中即能被3整除,又能被7整除的所有数之和。 s=0; for i=1:100 if mod(i,3)==0&&mod(i,7)==0 s=s+i; end,end s s = 210 3.画出y=n!的图(1<=n<=10),阶乘的函数自己编写,禁用MATLAB自带的阶乘函数。 x=1:10; for i=1:10 try y(i)=y(i-1)*i; catch y(i)=1; end,end plot(x,y)

12345678910 0.511.522.533.54x 10 6 4.一个数恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1,2,3,而6=1+2+3,因此6就是一个完数。编程找出2000以内的所有完数。 g=[]; for n=2:2000 s=0; for r=1:n-1 if mod(n,r)==0 s=s+r; end end if s==n g=[g n]; end end g g =6 28 496

5.编写一个函数,模拟numel函数的功能,函数中调用size函数。 function y=numelnumel(x) m=size(x); y=m(1)*m(2); numelnumel([1 2 3;4 5 6]) ans = 6 6. 编写一个函数,模拟length函数的功能,函数中调用size函数。 function y=lengthlength(x) m=size(x); y=max(m(1),m(2)); lengthlength([1 2 3;4 5 6]) ans = 3 7.求矩阵rand(5)的所有元素和及各行平均值,各列平均值。 s=rand(5); sum=sum(sum(s)) mean2=mean(s,2) mean1=mean(s) sum = 13.8469

matlab程序设计与应用(第二版)第三章部分课后答案

第三章1. (1)A=eye(3) (2)A=100+100*rand(5,6) (3)A=1+sqrt(0.2)*randn(10,50) (4)B=ones(size(A)) (5)A+30*eye(size(A)) (6)B=diag(diag(A)) 2. B=rot90(A) C=rot90(A,-1) 3. B=inv(A) ;A的逆矩阵 C=det(A) ;A的行列式的值 D=A*B E=B*A D=E 因此A与A-1是互逆的。 4. A=[4 2 -1;3 -1 2;12 3 0]; b=[2;10;8]; x=inv(A)*b x = -6.0000 26.6667 27.3333 5. (1) diag(A) ;主对角线元素 ans = 1 1 5 9 triu(A) ;上三角阵

ans = 1 -1 2 3 0 1 -4 2 0 0 5 2 0 0 0 9 tril(A) ;下三角阵 ans = 1 0 0 0 5 1 0 0 3 0 5 0 11 15 0 9 rank(A) ;秩 ans = 4 norm(A) ;范数 ans = 21.3005 cond(A) ;条件数 ans = 11.1739 trace(A) ;迹 ans = 16 (2)略 6. A=[1 1 0.5;1 1 0.25;0.5 0.25 2] A = 1.0000 1.0000 0.5000 1.0000 1.0000 0.2500 0.5000 0.2500 2.0000

[V,D]=eig(A) V = 0.7212 0.4443 0.5315 -0.6863 0.5621 0.4615 -0.0937 -0.6976 0.7103 D = -0.0166 0 0 0 1.4801 0 0 0 2.5365

matlab程序设计作业

Matlab程序设计作业 姓名: 学号: 专业:

? MATLAB 程序设计》作业 1、考虑如下x-y 一组实验数据: x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] y 二[1.2, 3, 4, 4, 5, 4.7, 5, 5.2, 6, 7.2] 分别绘出plot 的原始数据、一次拟合曲线和三次拟合曲线,给出 原始曲线 MATLAB 代码和运行结果。 7 6 5 4 3 2 2 3 4 5 6 7 8 9 10

7 6.5 6 5.5 5 4.5 4 3.5 3 2.5 10 一次拟合 三次拟合

x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; y=[1.2, 3, 4, 4, 5, 4.7, 5, 5.2, 6, 7.2]; figure; plot(x,y) p1=polyfit(x,y,1); y1=polyval(p1,x); figure; plot(x,y1) p2=polyfit(x,y,3); y2=polyval(p2,x); figure; plot(x,y2) 2、在[0, 3n区间,绘制y二Sin(x)曲线(要求消去负半波,即(n 2n)区间内的函数值置零),求出曲线y 的平均值,以及y 的最大值及其最大值的位置。给出执行代码和运行结果。 x=0:pi/1000:3*pi; y=Sin(x); y1=(y>=0).*y; %消去负半波figure(1); plot(x,y1, 'b' ); a=mean(y1) %求出y1 的平均值 b=max(y1) %求出y1 的最大值b, 以及最大值在矩阵中的位置; d=x(find(y1==b)) >> ex1 a = 0.4243 b = 1 d = 1.5708 7.8540 >>

MATLAB程序设计及经典例题解析3

MATLAB程序设计 用MATLAB语言编写的程序,称为M文件。M文件可以根据调用方式的不同分为两类:命令文件(Script File)和函数文件(Function File)。 例3-1 分别建立命令文件和函数文件,将华氏温度f转换为摄氏温度c。 程序1:首先建立命令文件并以文件名f2c.m存盘。 clear; %清除工作空间中的变量 f=input('Input Fahrenheit temperature:'); c=5*(f-32)/9 然后在MATLAB的命令窗口中输入f2c,将会执行该命令文件,执行情况为: Input Fahrenheit temperature:73 c =22.7778 程序2:首先建立函数文件f2c.m。 function c=f2c(f) c=5*(f-32)/9 然后在MATLAB的命令窗口调用该函数文件。 clear; y=input('Input Fahrenheit temperature:'); x=f2c(y) 输出情况为: Input Fahrenheit temperature:70 c =21.1111 x =21.1111 3.1.2 M文件的建立与打开 M文件是一个文本文件,它可以用任何编辑程序来建立和编辑,而一般常用且最为方便的是使用MATLAB提供的文本编辑器。

1.建立新的M文件 为建立新的M文件,启动MATLAB文本编辑器有3种方法: (1) 菜单操作。从MATLAB主窗口的File菜单中选择New菜单项,再选择M-file命令,屏幕上将出现MATLAB 文本编辑器窗口。 (2) 命令操作。在MATLAB命令窗口输入命令edit,启动MATLAB文本编辑器后,输入M文件的内容并存盘。 (3) 命令按钮操作。单击MATLAB主窗口工具栏上的New M-File命令按钮,启动MATLAB文本编辑器后,输入M文件的内容并存盘。 2.打开已有的M文件 打开已有的M文件,也有3种方法: (1) 菜单操作。从MATLAB主窗口的File菜单中选择Open命令,则屏幕出现Open对话框,在Open对话框中选中所需打开的M文件。在文档窗口可以对打开的M文件进行编辑修改,编辑完成后,将M文件存盘。 (2) 命令操作。在MATLAB命令窗口输入命令:edit 文件名,则打开指定的M文件。 (3) 命令按钮操作。单击MATLAB主窗口工具栏上的Open File命令按钮,再从弹出的对话框中选择所需打开的M文件。 3.2 程序控制结构 3.2.1 顺序结构 1.数据的输入 从键盘输入数据,则可以使用input函数来进行,该函数的调用格式为: A=input(提示信息,选项); 其中提示信息为一个字符串,用于提示用户输入什么样的数据。 如果在input函数调用时采用's'选项,则允许用户输入一个字符串。例如,想输入一个人的姓名,可采用命令: xm=input('What''s your name?','s'); 2.数据的输出 MATLAB提供的命令窗口输出函数主要有disp函数,其调用格式为

matlab程序设计实例

MATLAB 程序设计方法及若干程序实例 樊双喜 (河南大学数学与 信息科学学院开封475004) 摘要本文通过对 MATLAB 程序设计中的若干典型问题做简要的分析和总结,并在此基础上着重讨论了有关算法设计、程序的调试与测试、算法与程序的优化以及循环控制等方面的问题.还通过对一些程序实例做具体解析,来方便读者进行编程训练并掌握一些有关MATLAB 程序设计方面的基本概念、基本方法以及某些问题的处理技巧等.此外,在文章的最后还给出了几个常用数学方法的算法程序, 供读者参考使用.希望能对初学者进行 MATLAB 编程训练提供一些可供参考的材料,并起到一定的指导和激励作用,进而为MATLAB 编程入门打下好的基础. 关键字算法设计;程序调试与测试;程序优化;循环控制 1 算法与程序 1.1 算法与程序的关系算法被称为程序的灵魂,因此在介绍程序之前应先了 解什么是算法.所谓算 法就是对特定问题求解步骤的一种描述.对于一个较复杂的计算或是数据处理的问题,通常是先设计出在理论上可行的算法,即程序的操作步骤,然后再按照算法逐步翻译成相应的程序语言,即计算机可识别的语言. 所谓程序设计,就是使用在计算机上可执行的程序代码来有效的描述用于解决特定问题算法的过程.简单来说,程序就是指令的集合.结构化程序设计由于采用了模块分化与功能分解,自顶向下,即分而治之的方法,因而可将一个较复杂的问题分解为若干子问题,逐步求精.算法是操作的过程,而程序结构和程序流程则是算法的具体体现. 1.2MATLAB 语言的特点 MATLAB 语言简洁紧凑,使用方便灵活,库函数极其丰富,其语法规则与科技人员的思维和书写习惯相近,便于操作.MATLAB 程序书写形式自由,利用其丰富

MATLAB程序设计教程课后答案.doc

MATLAB第二版课后答案unit3-8 unit3 实验指导 1、 n=input('请输入一个三位数:'); a=fix(n/100); b=fix((n-a*100)/10); c=n-a*100-b*10; d=c*100+b*10+a 2( 1) n=input(' 请输入成绩 '); switch n case num2cell(90:100) p='A'; case num2cell(80:89) p='B'; case num2cell(70:79) p='C'; case num2cell(60:69) p='D'; otherwise p='E'; end price=p (2) n=input(' 请输入成绩 '); if n>=90&n<=100 p='A'; elseif n>=80&n<=89 p='B'; elseif n>=70&n<=79 p='C'; elseif n>=60&n<=69 p='D'; else p='E'; end price=p (3) try n; catch price='erroe' end 3 n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6];

a=n(1) ; b=n(1); for m=2:20 if n(m)>a a=n(m); elseif n(m)=0 disp(A([n],:)); elseif n<0 disp(lasterr); else disp(A([6],:)); disp(lasterr); end 7( 1) f=[];

矩量法matlab程序设计实例

矩量法m atla b程序设计实例: Ha llen 方程求对称振子天线 一、条件与计算目标 已知: 对称振子天线长为L,半径为a ,且天线长度与波长得关系为,,设,半径a=0、0000001,因此波数为。 目标: 用H all en 方程算出半波振子、全波振子以及不同值得对应参数值。 求:(1)电流分布 (2)E 面方向图 (二维),H 面方向图(二维),半波振子空间方向性图(三维) 二、对称振子放置图 图1 半波振子得电流 分布 半波振子天线平行于z 轴放置,在x轴与y轴上得分量都为零,坐标选取方式有两种形式,一般选取图1得空间放置方 式。图1给出了天线得电流分布情况,由图可知,当天线很细时,电流分布近似正弦分布。 三、Ha llen 方程 得解题思路 ()()()()2 1 ' ' ' ' 12,cos sin sin 'z z i z z z z i z k z G z z dz c kz c kz E k z z dz j ωμ'++=-?? 对于中心馈电得偶极子,Hallen 方程为 ()22'1222 ('),'cos sin sin ,2L L i L L V i z G z z dz c kz c kz k z z j η + -- ++= <<+? 脉冲函数展开与点选配,得到 ()1121 ,''cos sin sin ,1,2,,2n n N z i n m m m m z n V I G z z dz c kz c kz k z m N j η +''=++= =???∑? 上式可以写成 矩阵形式为 四、结果与分析 (1)电流分布

Matlab程序设计报告

中南大学 题目Matlab程序设计 学生姓名 指导教师 学院地球科学与信息物理学院 专业班级测绘1004 学生学号 2013年 10月 28 日

一、试验目的及要求 已知ALOS卫星为用户提供的轨道数据,总共有28个轨道位置点,包括轨道点的时间、空间位置(x,y,z)及其在该点的速度(dx,dy,dz),任意两个轨道点的获取时间相隔为60秒。要求利用各种数据插值方法计算数据获取时间内任意时刻的卫星所在的位置。数据文件“LED-ALPSRP063392880-P1.1__D.orbit.txt”提供了卫星平台的相关参数及轨道数据。请编写程序实现轨道数据的读出、数据插值及轨道加密后的数据文件的存储。并用三维绘图命令画出地球及相应轨道 二、试验过程 1、数据读取

2、拉格朗日内插法 lagrange

3、文件存储 三、试验代码 fid = fopen('F:\MATLAB_exp2\LED-ALPSRP063392880-P1.1__D.orbit.txt','r'); vec_num = textscan(fid,'%s%n',1); vec_num=vec_num{2}; vec_time= textscan(fid,'%s%n%s',1); vec_time=vec_time{2}; vec_intv=textscan(fid,'%s%n%s',1); vec_intv=vec_intv{2}; mat_pos=zeros(28,3); mat_velo=zeros(28,3); for i=1:28 vec_pos=textscan(fid,'%s%n%n%n%s%s%s',1);

MATLAB程序设计基础

第三章MATLAB程序设计基础 chapter 3: Foundation of MATLAB program design 一、数据及数据文件(Data and Data file) 1. 数据类型:(Data mode)为适应各种不同计算和处理的需求,MATLAB提供了多种数据类型,主要有: 数值数组(Numeric array)— 包括整形(int8,uint8,int16,uint16,int32,uint32)单精度 (signal), 双精度(duble)(MATLAB最常用的变量类型), 稀疏(sparce)数组。按维数分有一维、二维和多维数 组。 Int---Integrate. Uint---Unsigned Integer data 字符数组(Character array):由字符串组成的数组 单元数组(Cell array):用不同类型和大小的数组组成的数组,同 一个元胞数组中各元胞的内容可以不同。 结构数组(Structure array):与单元数组类似,但其数据的组织能 力更强,更富于变化。 Java类(Java class):由JavaAPI或第三方定义的类函数。 函数句柄(Function handle):可以在一个参数列表中传递,并使 用feval运行. 在工作空间浏览器中不同的数据类型有着不同的图标标识。2. 数据文件(Data file) MATLAB支持的各种数据文件(Readable file formats of MATLAB)的主要类型及其存取方法如下述: (1)二进制数据文件:(Binary date file)以.mat为扩展名。是标准的MATLAB数据文件,以二进制编码形式存储。.mat文件可以由MATLAB提供的save和load命令直接存取。 (2)ASCⅡ码数据文件:(ASCⅡcode data file)扩展名为.txt, .dat

文本预览
相关文档 最新文档