Matlab讲义-第四章Matlab语言程序设计基础2-10

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第四章Matlab语言基础——matlab语言程序简洁、可读性很强而且调试十分容易。§4.2MATLAB的输入与输出语句‘张三‘%从键盘输入字符串时注意加单引号1.键盘提示输入命令(input)x=input(‘提示信息’)格式1:x=input('x=\n');2x=input(‘x=\n');[1,2;3,4];x=input(x=\n');name=input(‘Inputyournameplease:\n','s')%此种情况,键入字符型数据,不用加‘’Inputyournameplease:张三name=张三注意:name仍为一字符串变量x=input(‘提示信息’,’s’)格式2:1.键盘提示输入命令(input)%s代表字符串(string),为固定参数key=input('pleaseinputkeyvaluve,0~9or#or*:','s');高频低频1209133614471663697123A770456B852789C941*0#D注意:key为一字符串变量格式控制输出:fprintf2.输出格式将结果显示在命令窗口中变量名称disp(变量名)S=0;forx=2:2:100S=S+x;endS%disp(S)S=25502550fprintf格式输出指令fprintf用来控制指定数据或文字的输出形式,其基本使用格式如:由%引导:%f:小数形式输出%e:指数形式输出%d:整数或指数形式输出下面举例说明不同形态的输出格式fprintf('Theareais%8.4f\n',area)e_form:1.23452e+004fprintf(‘x=%d,y=%d\n',12345.2,26)X=1.234520e+004,y=26d:对小数,按指数形式输出d:对整数,原形输出fprintf('e_form:%e\n',12345.2)area=12.56637fprintf('x=%.0f,y=%.2f\n‘,area,area)x=13,y=12.57§4.3M文件简介M文件是由MATLAB语句构成的文本文件,用户可以用普通的文本编辑把一系列MATLAB语句写进一个文件里,给定文件名,确定文件的扩展名为.m,并存储。1.用MATLAB自带的编辑器-edit2.用文本文档编辑文件M文件的编辑方法自动存储为.m文件手工存储为.m文件1.脚本文件(Scripts):也称命令文件,没有入口和出口参数。2.函数文件(Function):子程序,可由用户编写,但必须由其它m文件来调用。有入口和出口参数。M程序文件分为两种clc,clearS=0;forx=2:2:100S=S+x;endSfunction[area,volume]=area_volume(r)%r为圆半径%area返回球的表面积值%volume返回球的体积值area=4*pi*r^2;volume=(4/3)*pi*r^3;脚本文件是最简单的m-文件,它没有入口和出口参数变量。可以自动执行的一系列MATLAB语句。脚本是对工作空间中的现有数据进行操作,或创建一个新数据,而且脚本所创建的任一变量在脚本运行完都保留在工作空间中以便进一步使用。4.3.1脚本文件clc,clearS=0;forx=2:2:100S=S+x;endS脚本文件举例【例】:Lx1.m-键盘提示输入半径,计算一个球的表面积和体积r=input('radius:');area=4*pi*r^2volume=(4/3)*pi*r^3;fprintf('Thevolumeofasphereis%.5f\n',volume)4.3.2函数文件function[out1,out2,..]=filename(in1,in2,..)函数体语句;说明:函数m文件保存的文件名必须与其函数名相同;输入参数用小括号括起来,输出参数则用方括号括起来,如果参数多于1个,用逗号隔开;当函数无输出参数时,输出参数项空缺或者用空的中括号表示。必须由其它m文件来调用function[V,D]=eig(A,B)语句体;函数文件的第一行为函数定义行,必需function开头;function[]=eig(A)语句体;functioneig(A,B)语句体;主要形式有3种建立求球的面积和体积的函数文件,入口参数为r,返回参数为area和volumefunction[area,volume]=area_volume(r)%r为圆半径%area返回球的表面积值%volume返回球的体积值area=4*pi*r^2;volume=(4/3)*pi*r^3;保存为area_volume.m函数M文件r=5;%给定r值[area,volume]=area_volume(r)4.3.2函数文件另编一个程序lx.m调用函数area_volumefunction[area,volume]=area_volume(r)a=4*pi*r^2;v=(4/3)*pi*r^3;area=a;volume=v;function[area,volume]=area_volume(r)area=4*pi*r^2;volume=(4/3)*pi*r^3;返回参数一定在函数程序中有返回值函数程序设计重要提示§4.4程序结构与C语言类似,MATLAB程序的控制结构也有顺序结构、选择结构和循环结构三种。其控制语句主要有if,switch,for,while四个,下面分别进行介绍。for循环变量=表达式……;endwhile条件式……;endfor语句多用在已知循环次数的情况,而while语句则多用在不能判定循环次数的情况下。只要条件式的值为真(非零),就执行while与end之间的语句体,直到表达式的值为0假(0)时终止该循环。一、循环语句(for语句和while语句)forx=m:p:n语句组;end最常见:冒号表达式注意1:循环变量一旦给定,则每执行一次循环,循环变量自动取下一列数据,不能通过循环体内重新赋值的方式来改变。for与while循环语句示例:【例】求1~100的偶数和x=2;s=0;whilex=100s=s+x;x=x+2;endss=0;forx=2:2:100s=s+x;endsfor循环变量=表达式……endwhile条件式……;end注意:累加结果变量需在循环体外赋初值X=zeros(1,6);fork=1:6;X(k)=1/k;k=100;endformatrat;k,Xfor循环提示1:在for循环体内重新赋值循环变量,不能结束for循环k=100X=11/21/31/41/51/6结果?X=zeros(1,6);fork=1:6;X(k)=1/k;endformatrat;k,Xk=6X=11/21/31/41/51/6功能:按分数形式显示1-6的倒数功能?k下标必需,否则只存了最后一次计算结果if-else-end语句switch-case-end语句二、选择结构(条件语句)1.if条件语句if条件式语句组;endif条件式1语句组1;elseif条件式2语句组2else语句组3;end条件式的结果为真执行相应的语句组if条件式1语句组1;else语句组3;end执行过程:%注意:elseif中间无空格1或全1clc,clearx=-3:0;ifx=-3&x=0y=x;elsey=x.^2;endy全1矩阵clc,clearx=-3:0;ifx=-2&x0y=x;elsey=x.^2;endyy=-3-2-10y=9410注意:条件式的结果为真执行相应的语句组结果?非全1矩阵【例】按要求根据x值给出其对应的符号010001xxxxsign2.已知x=-3:0.01:3x=-3:0.01:3;ifx0sn=1;elseifx==0sn=0;elsesn=-1;endsnsn=-1结果?非全1结果是否满足要求x=input('x=');ifx0sn=1;elseifx==0sn=0;elsesn=-1;endsn1.键盘输入单值x【例】按要求根据x值给出其对应的符号010001xxxxsign2.已知x=-3:0.01:3x=-3:0.01:3;ifx0sn=1;elseifx==0sn=0;elsesn=-1;endsn变成单值判断x=-3:0.01:3;fork=1:length(x)ifx(k)0sn(k)=1;elseifx(k)==0sn(k)=0;elsesn(k)=-1;endendsnfor+if结构如何修改满足要求?已知x=-10:0.01:10,编程绘制函数曲线:21220022xx-xxxxxxy方法一:x=-10:0.01:10;yx=x.*(x0)+(x.^2).*(x=0&x=2)+(x.^2-2*x+1).*(x2);plot(x,yx)利用关系和逻辑表达式表示分段函数值【例】已知x=-10:0.01:10,编程绘制函数曲线。x=-10:0.01:10;fork=1:length(x)ifx(k)0y(k)=x;elseifx(k)=0&x(k)=2y(k)=x^2;elsey(k)=x^2-2*x+1;endend21220022xx-xxxxxxyx=-10:0.01:10;ifx=-10&x0y=x;elseifx=0&x=2y=x^2;elseifx2&x=10y=x^2-2*x+1;endplot(x,y)找错误并修改【例】方法二:???Undefinedfunctionorvariable'y'.for+if结构【例】编写函数mappingBPSK完成BPSK映射。functionBPSKCode=mappingBPSK(data)fork=1:length(data)ifdata(k)==0BPSKCode(k)=1;elseBPSKCode(k)=-1;endendBPSKCode=mappingBPSK(data)%mappingBPSK完成BPSK编码映射%data待编码映射的二进制序列%BPSKCode编码映射后的序列011-1映射:for+if结构实现【练习】按要求绘制如下曲线并加标记。dt=0.01;t=0:dt:length(data);横坐标:tdata=[101];00.511.522.53-0.200.20.40.60.81输入的二进制信息序列二进制传输码元101起始值:步长:终止值0length(data)dt纵坐标:ydata=[ones(1,ysam),zeros(1,ysam),ones(1,ysam)];1,ysam=1/dt;t=0:dt:length(data)-dt;ydata=[ones(1,ysam),zeros(1,ysam),ones(1,ysam)];或:clc,cleardata=[101];dt=0.001;ysam=1/dt;%每一个码元的采样点数t=0:dt:length(data)-dt;%或t=0:dt:length(data),data补一个值ydata=[ones(1,ysam),zeros(1,ysam),ones(1,ysam)];plot(t,ydata);axis([t(1),t(end),min(ydata(:))-0.2,max(ydata(:))+0.2]);%规定所画图示的坐标xlabel('输入的二进制信息序列');title(‘二进制传输码元');text(1-0.5,-0.1,'1','FontWeight','bold','FontSize',14)text(2-0.5,-0.1,'0','FontWeight','bold','FontSize',14)text(3-0.5,-0.1,'1','FontWeight','bold','FontSize',14)00.511.522.53-0.200.20.40.60.81输入的

1 / 67
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功