分享
分享赚钱 收藏 举报 版权申诉 / 67

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

  • 上传人:a****
  • 文档编号:769247
  • 上传时间:2025-12-14
  • 格式:PDF
  • 页数:67
  • 大小:1.12MB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Matlab 讲义 第四 语言程序设计 基础 10
    资源描述:

    1、第四章 Matlab语言基础 matlab语言程序简洁、可读性很强而且调试十分容易。4.2 MATLAB的输入与输出语句张三%从键盘输入字符串时注意加单引号1.键盘提示输入命令(input)x=input(提示信息)格式1:x=input(x=n);2x=input(x=n);1,2;3,4;x=input(x=n);name=input(Input your name please:n,s)%此种情况,键入字符型数据,不用加Input your name please:张三name=张三注意:name仍为一字符串变量x=input(提示信息,s)格式2:1.键盘提示输入命令(input)%s

    2、 代表字符串(string),为固定参数key=input(please input key valuve,09 or#or*:,s);高频 低频 1209133614471663697123A770456B852789C941*0#D注意:key为一字符串变量格式控制输出:fprintf2.输出格式将结果显示在命令窗口中 变量名称disp(变量名)S=0;for x=2:2:100S=S+x;endS%disp(S)S=25502550 fprintf格式输出指令fprintf用来控制指定数据或文字的输出形式,其基本使用格式如:由%引导:%f:小数形式输出%e:指数形式输出%d:整数或指数形

    3、式输出下面举例说明不同形态的输出格式 fprintf(The area is%8.4fn,area)e_form:1.23452e+004 fprintf(x=%d,y=%dn,12345.2,26)X=1.234520e+004,y=26d:对小数,按指数形式输出d:对整数,原形输出fprintf(e_form:%en,12345.2)area=12.56637fprintf(x=%.0f,y=%.2fn,area,area)x=13,y=12.574.3 M文件简介M文件是由MATLAB语句构成的文本文件,用户可以用普通的文本编辑把一系列MATLAB语句写进一个文件里,给定文件名,确定文件

    4、的扩展名为.m,并存储。1.用MATLAB自带的编辑器edit2.用文本文档编辑文件M文件的编辑方法自动存储为.m文件手工存储为.m文件1.脚本文件(Scripts):也称命令文件,没有入口和出口参数。2.函数文件(Function):子程序,可由用户编写,但必须由其它m文件来调用。有入口和出口参数。M程序文件分为两种clc,clearS=0;for x=2:2:100S=S+x;endSfunction area,volume=area_volume(r)%r为圆半径%area 返回球的表面积值%volume返回球的体积值area=4*pi*r2;volume=(4/3)*pi*r3;脚本文

    5、件是最简单的m-文件,它没有入口和出口参数变量。可以自动执行的一系列MATLAB语句。脚本是对工作空间中的现有数据进行操作,或创建一个新数据,而且脚本所创建的任一变量在脚本运行完都保留在工作空间中以便进一步使用。4.3.1脚本文件clc,clearS=0;for x=2:2:100S=S+x;endS脚本文件举例【例】:Lx1.m-键盘提示输入半径,计算一个球的表面积和体积r=input(radius:);area=4*pi*r2volume=(4/3)*pi*r3;fprintf(The volume of a sphere is%.5fn,volume)4.3.2函数文件function

    6、out1,out2,.=filename(in1,in2,.)函数体语句;说明:函数m文件保存的文件名必须与其函数名相同;输入参数用小括号括起来,输出参数则用方括号括起来,如果参数多于1个,用逗号隔开;当函数无输出参数时,输出参数项空缺或者用空的中括号表示。必须由其它m文件来调用function V,D=eig(A,B)语句体;函数文件的第一行为函数定义行,必需function开头;function =eig(A)语句体;function eig(A,B)语句体;主要形式有3种 建立求球的面积和体积的函数文件,入口参数为r,返回参数为area和volumefunction area,volum

    7、e=area_volume(r)%r为圆半径%area 返回球的表面积值%volume返回球的体积值area=4*pi*r2;volume=(4/3)*pi*r3;保存为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*r2;v=(4/3)*pi*r3;area=a;volume=v;function area,volume=area_volume(r)area=4*pi*r2;volum

    8、e=(4/3)*pi*r3;返回参数一定在函数程序中有返回值 函数程序设计重要提示 4.4程序结构与C语言类似,MATLAB程序的控制结构也有顺序结构、选择结构和循环结构三种。其控制语句主要有if,switch,for,while四个,下面分别进行介绍。for 循环变量=表达式;endwhile 条件式;end for 语句多用在已知循环次数的情况,而while 语句则多用在不能判定循环次数的情况下。只要条件式的值为真(非零),就执行while与end之间的语句体,直到表达式的值为0假(0)时终止该循环。一、循环语句(for语句和while语句)for x=m:p:n语句组;end最常见:冒号

    9、表达式 注意1:循环变量一旦给定,则每执行一次循环,循环变量自动取下一列数据,不能通过循环体内重新赋值的方式来改变。for与while循环语句示例:【例】求1100的偶数和x=2;s=0;while x=-3&x=-2&x0sn=1;elseif x=0sn=0;elsesn=-1;endsnsn=-1结果?非全1结果是否满足要求 x=input(x=);if x0sn=1;elseif x=0sn=0;elsesn=-1;endsn1.键盘输入单值x【例】按要求根据x值给出其对应的符号 010001xxxxsign2.已知x=-3:0.01:3x=-3:0.01:3;if x0sn=1;el

    10、seif x=0sn=0;elsesn=-1;endsn变成单值判断x=-3:0.01:3;for k=1:length(x)if x(k)0sn(k)=1;elseif x(k)=0sn(k)=0;elsesn(k)=-1;endendsnfor+if结构如何修改满足要求?已知x=-10:0.01:10,编程绘制函数曲线:21220022xx-xxxxxxy 方法一:x=-10:0.01:10;yx=x.*(x=0&x2);plot(x,yx)利用关系和逻辑表达式表示分段函数值【例】已知x=-10:0.01:10,编程绘制函数曲线。x=-10:0.01:10;for k=1:length(x

    11、)if x(k)=0&x(k)=-10&x=0&x2&x=10y=x2-2*x+1;endplot(x,y)找错误并修改【例】方法二:?Undefined function or variable y.for+if结构【例】编写函数mappingBPSK完成BPSK映射。function BPSKCode=mappingBPSK(data)for k=1:length(data)if data(k)=0BPSKCode(k)=1;elseBPSKCode(k)=-1;endendBPSKCode=mappingBPSK(data)%mappingBPSK完成BPSK编码映射%data待编码映射

    12、的二进制序列%BPSKCode编码映射后的序列0 1 1 -1 映射:for+if结构实现【练习】按要求绘制如下曲线并加标记。dt=0.01;t=0:dt:length(data);横坐标:tdata=1 0 1;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

    13、),zeros(1,ysam),ones(1,ysam);或:clc,cleardata=1 0 1;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

    14、,-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输 入 的 二 进 制 信 息 序 列二 进 制 传 输 码 元101【例3】编程绘制任意长度0、1组成的二进制序列data对应的二进制传输波形图。00.511.522.533.544.55-0.200.20.40.60.8111010长度为5的二进制传输波形图纵坐标ydata如何

    15、表示?0、1标注如何实现?问题:for+if结构实现n=input(请输入n=);dt=0.001;data=randint(1,n);t=0:dt:length(data)-dt;ydata=;for k=1:length(data)if data(k)=1 elseendendplot(t,ydata)for p=1:length(data)if data(p)=1text(p-0.5,0.3,1,FontSize,16)elsetext(p-0.5,0.3,0,FontSize,16)endendaxis(min(t)-0.1,max(t)+0.1,-0.2,1.2)gridtitle(

    16、长度为,num2str(n),的二进制传输波形图,Fontsize,16)for+if结构实现ydata=ones(1,1/dt)ydata,;ydata=zeros(1,1/dt)ydata,;00.511.522.533.544.55-0.200.20.40.60.8111010长度为5的二进制传输波形图switch swith_expr分支条件case 数值(或字符串)常量case 数值(或字与符串)常量,数值(或字符串)常量case 数值(或字符串)常量otherwise end 格式2.switch 分支结构分支条件可以是变量、函数、或表达式 执行过程:首先计算表达式swith_ex

    17、pr的值,然后与各个case语句中的常量比较,选择第一个与之匹配的case语句组执行,执行完毕后立即退出switch语句组;若没有与swith_expr的值相匹配的case语句,则执行othwise后的语句组,并退出switch语句组。结果为数值或字符串常量 当开关表达式swith_expr的值等于case表达式1时,将执行语句段1,执行完语句段1后将转出开关体,无需像c语言那样在下一个case语句前加break语句。当需要在开关表达式swith_expr满足若干个可以枚举的结果之一时执行某一程序段,则应该把这些结果在case后用起来,中间用逗号分隔,这类似与C语言中多分支间break语句省略

    18、的情况。MATLAB开关switch语句与c的区别:clc,cleara=input(a=);switch acase 1,3,5disp(go to classroom 118);case 2,4disp(go to classroom 218);otherwisedisp(go home);end当需要在开关表达式swith_expr满足若干个可以枚举的结果之一时执行某一程序段,则应该把这些结果在case后用起来,中间用逗号分隔【例】【练习题】某商场对所售商品(price表示价格)按如下标准打折,完善程序,使其功能是输入所售商品的价格,给出折扣率。switch floor(price/10

    19、0)case 1,2,3,4,5price=input(请输入100元以上商品价格n);switch case rate=5/100otherwiserate=10/100end switch priceswitch price=100&price=100&price=-1/2&t=-1/2&t=1/2;w=-6*pi:0.01:6*pi;for p=1:length(w)gw(p)=0;for k=1:length(t)gw(p)=gw(p)+;endendplot(w,gw),gridB,gw0=ginput(1);hold on plot(B,gw0,r.,MarkerSize,16)t

    20、ext(B+0.1,gw0+0.1,w=,num2str(B)-20-15-10-505101520-0.4-0.200.20.40.60.811.2w=6.2212 dtetgGtj11gt(k).*exp(-j*w(p)*t(k)*dt6:001.0:6-【思考】编写程序绘制任意长度0、1组成的二进制序列data传输波形图y1及其对应的2ASK调制波形图y2。00.511.522.533.544.5500.5111010二 进 制 传 输 波 形 图00.511.522.533.544.55-1-0.500.512ASK调 制 波 形 图2ASK参数如下:1码元时间内对应频率为5Hz的正弦

    21、波形:0码元时间内对应:y=0ty10sinty10sint=0:dt:length(data)-dty2=ydata.*yydatay1=ydata练习编写函数inter完成交织及deinter函数完成解交织,格式如下:deInterCode=deinter(datain,index)%deinter完成交织%index交织序号InterCode,index=inter(datain)%inter完成交织%datare待交织的序列%InterCode编码映射后的序列%index交织序号1:nNO=NOBreshape(NOB,Fsize,Fsize)NOB_re=NOB_reindex=in

    22、dex(find(index=0)=NO,zeros(1,Fsize2-n)datain(index)InterCode=dataindeInterCode(index)=ceil(sqrt(n);Fsize=最接近的方阵的维数如何求得?function InterCode,index=inter(datain)n=length(datain)function deInterCode=deinter(datain,index)实验六 MATLAB在通信系统SNR-BER性能仿真中的应用 通信系统(技术)误码率性能仿真即通过MATLAB编程的方法,计算出系统在不同噪声情况(SNR)下的系统误码率

    23、(误比特率)BER,并绘制SNR-BER之间的关系图。SNRdb=0:10;或SNRdb=0:2:20任意连续简化awgn_info=awgn(MappCode,SNRdb,measured);%信号加噪Error=biterr(Data_in,Data_out);semilogy(SNR,BER,r p)编程基本思路:对某一信噪比,测试多帧数据,从而计算在该信噪比下系统平均误比特率(误码率)。给出从SNRdb=0:12,计算出13个BER值,画出SNRBER关系图。SNRdb=0:12首先,编写函数mappingBPSK完成BPSK映射及解映射函数demappingBPSK。数据流:每一个子

    24、框的输出都是下一个子框的输入每一个子框的功能可通过调用函数(系统或自编)来实现编写函数inter完成交织及deinter函数完成解交织,格式如下:deInterCode=deinter(datare,index)%deinter完成交织%index交织序号InterCode,index=inter(datare)%inter完成交织%datare待交织的序列%InterCode编码映射后的序列%index交织序号dataredatareInterCode deInterCodeData_in=randint(1,Len_frame);InterCode,index=inter(Data_in)

    25、;awgn_info=awgn(InterCode,SNRdb,measured);Data_out=deinter(awgn_info,index);Error=biterr(Data_in,Data_out);ber=Error/Len_frame;%误比特率 SNRdb=0;Len_frame=1024;for ab=1:NframeNframe=100;Totalerror=0;Totalerror=Totalerror+Error;endber=Totalerror/(Nframe*Len_frame);Data_in=randint(1,Len_frame);InterCode,i

    26、ndex=inter(Data_in);awgn_info=awgn(InterCode,SNRdb ,measured);Data_out=deinter(awgn_info,index);Error=biterr(Data_in,Data_out);Totalerror=Totalerror+Error;BER =Totalerror/(Nframe*Len_frame);for am=1:LenSNRsemilogy(SNRdb,BER,r p)for ab=1:NframeendTotalerror=0;end Nframe=100;SNRdb=0:10;LenSNR=length(S

    27、NRdb);Len_frame=1024;(am)(am)fprintf(%d dB%dn,SNRdb(am),BER(am);fprintf(%d dB%dn,SNRdb(am),BER(am);格式化输出:4.7MATLAB搜索路径(文件管理)搜索路径:标识符(包括变量,内部函数,用户自定义函数等等)识别的顺序 它按如下的顺序(优先级)与已有的记录相比较:工作空间的变量名 内部固有变量名 mex 文件名 m文件名 如果两个名字相同,它只认优先级高的名字mex文件是一种可在matlab环境中调用的C语言(或fortran)衍生程序例如:在MATLAB提示符下键入lust,则 MATLAB按以下步骤处理.(1)首先检查lust是不是变量;(2)然后检查lust是不是内部函数;(3)检查当前目录中是否有lust.mex,lust.dll 或lust.m文件(4)如果均不满足,则显示出错信息。如果两个名字相同,它只认优先级高的名字Thank you for your cooperation

    展开阅读全文
    提示  课堂库(九科星学科网)所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Matlab讲义-第四章Matlab语言程序设计基础2-10.pdf
    链接地址:https://www.ketangku.com/wenku/file-769247.html
    相关资源 更多
  • 人教版数学四年级下学期期末质量监测试题及答案(全优).docx人教版数学四年级下学期期末质量监测试题及答案(全优).docx
  • 人教版数学四年级下学期期末质量监测试题及答案免费.docx人教版数学四年级下学期期末质量监测试题及答案免费.docx
  • 人教版数学四年级下学期期末质量监测试题及答案一套.docx人教版数学四年级下学期期末质量监测试题及答案一套.docx
  • 人教版数学四年级下学期期末质量监测试题及答案【考点梳理】.docx人教版数学四年级下学期期末质量监测试题及答案【考点梳理】.docx
  • 人教版数学四年级下学期期末质量监测试题及答案【易错题】.docx人教版数学四年级下学期期末质量监测试题及答案【易错题】.docx
  • 人教版数学四年级下学期期末质量监测试题及答案【必刷】.docx人教版数学四年级下学期期末质量监测试题及答案【必刷】.docx
  • 人教版数学四年级下学期期末质量监测试题及答案【基础 提升】.docx人教版数学四年级下学期期末质量监测试题及答案【基础 提升】.docx
  • 人教版数学四年级下学期期末质量监测试题及答案【各地真题】.docx人教版数学四年级下学期期末质量监测试题及答案【各地真题】.docx
  • 人教版数学四年级下学期期末质量监测试题及答案【全优】.docx人教版数学四年级下学期期末质量监测试题及答案【全优】.docx
  • 人教版数学四年级下学期期末质量监测试题及完整答案(精品).docx人教版数学四年级下学期期末质量监测试题及完整答案(精品).docx
  • 人教版数学四年级下学期期末质量监测试题及完整答案(易错题).docx人教版数学四年级下学期期末质量监测试题及完整答案(易错题).docx
  • 人教版数学四年级下学期期末质量监测试题及完整答案(夺冠).docx人教版数学四年级下学期期末质量监测试题及完整答案(夺冠).docx
  • 人教版数学四年级下学期期末质量监测试题及完整答案(名师系列).docx人教版数学四年级下学期期末质量监测试题及完整答案(名师系列).docx
  • 人教版数学四年级下学期期末质量监测试题及完整答案(各地真题).docx人教版数学四年级下学期期末质量监测试题及完整答案(各地真题).docx
  • 人教版数学四年级下学期期末质量监测试题及完整答案(全国通用).docx人教版数学四年级下学期期末质量监测试题及完整答案(全国通用).docx
  • 人教版数学四年级下学期期末质量监测试题及完整答案【必刷】.docx人教版数学四年级下学期期末质量监测试题及完整答案【必刷】.docx
  • 人教版数学四年级下学期期末质量监测试题及完整答案【名师系列】.docx人教版数学四年级下学期期末质量监测试题及完整答案【名师系列】.docx
  • 人教版数学四年级下学期期末质量监测试题及完整答案1套.docx人教版数学四年级下学期期末质量监测试题及完整答案1套.docx
  • 人教版数学四年级下学期期末质量监测试题及参考答案(综合题).docx人教版数学四年级下学期期末质量监测试题及参考答案(综合题).docx
  • 人教版数学四年级下学期期末质量监测试题及参考答案(最新).docx人教版数学四年级下学期期末质量监测试题及参考答案(最新).docx
  • 人教版数学四年级下学期期末质量监测试题及参考答案(实用).docx人教版数学四年级下学期期末质量监测试题及参考答案(实用).docx
  • 人教版数学四年级下学期期末质量监测试题及参考答案(典型题).docx人教版数学四年级下学期期末质量监测试题及参考答案(典型题).docx
  • 人教版数学四年级下学期期末质量监测试题及参考答案【考试直接用】.docx人教版数学四年级下学期期末质量监测试题及参考答案【考试直接用】.docx
  • 人教版数学四年级下学期期末质量监测试题及参考答案【突破训练】.docx人教版数学四年级下学期期末质量监测试题及参考答案【突破训练】.docx
  • 人教版数学四年级下学期期末质量监测试题及参考答案【研优卷】.docx人教版数学四年级下学期期末质量监测试题及参考答案【研优卷】.docx
  • 人教版数学四年级下学期期末质量监测试题及参考答案【满分必刷】.docx人教版数学四年级下学期期末质量监测试题及参考答案【满分必刷】.docx
  • 人教版数学四年级下学期期末质量监测试题及参考答案【模拟题】.docx人教版数学四年级下学期期末质量监测试题及参考答案【模拟题】.docx
  • 人教版数学四年级下学期期末质量监测试题及参考答案【实用】.docx人教版数学四年级下学期期末质量监测试题及参考答案【实用】.docx
  • 人教版数学四年级下学期期末质量监测试题及参考答案【完整版】.docx人教版数学四年级下学期期末质量监测试题及参考答案【完整版】.docx
  • 关于我们 - 联系我们 - 加入我们 - 常用工具与软件 - 公益活动

    copyright@ 2020-2024 www.ketangku.com网站版权所有

    黑ICP备2024021605号-1