




免费预览已结束,剩余5页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB初学者知识论文 姓名:张桐笙 学号:3090717120班级:计本09-1 专业:计算机科学与技术学院:信科院 摘要:总结了学习MATLAB一学期的一些基础知识,充分体现了MATLAB功能强大,特别是绘图功能,能很容易的解决很多数学问题,既可以绘制二维图形,又可以绘制三维图形,功能齐全。一、MATLAB学习点滴之简单解决非图形数学问题(1)在1500中,找出能同时满足用3除余2,用5除余3,用7除余2的所有整数;a=1:500;b=a(find(rem(a,3)=2);c=b(find(rem(b,5)=3);d=c(find(rem(c,7)=2);disp(在1500中,找出能同时满足用3除余2,用5除余3,用7除余2的所有整数:)disp(d)在1500中,找出能同时满足用3除余2,用5除余3,用7除余2的所有整数:23 128 233 338 443 可以看出MATLAB在解决某些数学问题上面,比其他语言具有更为方便简单的优势。(2)1,2,3,NaN,5,NaN,7,8,9,10如何将NaN以外的8个数加起来,然后求这8个数的平均数。- a=1 2 3 nan 5 nan 7 8 9 10; b=a; b(find(isnan(a)=b =1 2 3 5 7 8 9 10 a=1 2 3 nan 5 nan 7 8 9 10;简洁些可以这样:mean_a=mean(a(isnan(a) 由此可以看出MATLAB代码更为简洁。 二、MATLAB学习点滴之数组、矩阵问题(1)我想知道如何把数组/矩阵各行元素逆序排列?例如a=1 2 3 4 5;11 12 13 14 15,如何把它的元素逆序排列变成a1=5 4 3 2 1;15 14 13 12 11 -FLIPLR Flip matrix in left/right direction.FLIPLR(X) returns X with row preserved and columns flippedin the left/right direction.X = 1 2 3 becomes 3 2 14 5 6 6 5 4See also FLIPUD, ROT90, FLIPDIM.(2)比如说一个2*100的矩阵A,只有A190这个元素是非零的-可列举两种方法:1 : is=1; js=90; as=100; S=sparse(is,js,as)S =(1,90) 1002: S=spalloc(2,100,1);%2*100 matric with 1 nezeros elment S(1,90)=100; SS =(1,90) 100 由此可以看出MATLAB对数据,矩阵的一些处理也是相当方便的。三、MATLAB学习点滴之二维绘图问题plot 最基本的二维图形指令plot的功能:plot命令自动打开一个图形窗口Figureplot用直线连接相邻两数据点来绘制图形根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,可自定坐标轴,可把x, y 轴用对数坐标表示。如果已经存在一个图形窗口,plot命令则清除当前图形,绘制新图形可单窗口单曲线绘图;可单窗口多曲线绘图;可单窗口多曲线分图绘图;可多窗口绘图可任意设定曲线颜色和线型可给图形加坐标网线和图形加注功能下例可画出一条正弦曲线: close all; x=linspace(0, 2*pi, 100); % 100个点的x坐标 y=sin(x); % 对应的y坐标 plot(x,y); 小整理:MATLAB基本绘图函数 plot: x轴和y轴均为线性刻度(Linear scale) loglog: x轴和y轴均为对数刻度(Logarithmic scale) semilogx: x轴为对数刻度,y轴为线性刻度 semilogy: x轴为线性刻度,y轴为对数刻度 若要画出多条曲线,只需将坐标对依次放入plot函数即可: plot(x, sin(x), x, cos(x);例如:在区间0x2p内,绘制正弦曲线y=sin(x)。其程序为: x=0:pi/100:2*pi; y=sin(x); plot(x,y)一次画出多条曲线:将 x 及 y 坐标依次送入plot 指令x = linspace(0, 2*pi); % 在 0 到 2 间,等分取 100 个点plot(x, sin(x), x, cos(x), x, sin(x)+cos(x); % 进行多条曲线描点作图Plot(x,sin(x), x, cos(x), x, sin(x)+cos(x);多窗口绘图:例如:采用多窗口绘制正弦、余弦、正切、余切曲线在区间0x2p内的图形。程序如下:x=0:pi/100:2*pi;y=sin(x);z=cos(x);t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps);H1=figure; plot(x,y); title(sin(x); axis (0 2*pi -1 1); H2=figure; plot(x,z); title(cos(x);Axis(0 2*pi -1 1);H3=figure;plot(x,t);title(tangent(x);axis(0 2*pi -40 40);H4=figure;plot(x,ct);title(cotangent(x);axis(0 2*pi -40 40);由上述几个简单的例子可见,MATLAB能够使各种数学函数直观的显示出其图像,由此不难推出,如果深入学习MATLAB必能解决生活中的许多问题。四、MATLAB学习点滴之学习中遇到的一些问题 controlling legends的方法: 之前编写MATLAB中,关于怎么排除掉一些图线不显示其legend一直搞不懂,后来上网查询了其方法。从mathworks官网上发现了一个关于controlling legends的方法: 注意! 这个方法来源于MATLAB论坛:图形对象的两个属性控制了legend的显示方式,一是annotation property,一是display name。其中,annotation property可以控制对象的图例是否显示、以群组形式显示或者显示子对象的图例。那么,论坛中有不少问题关于怎么排除掉一些图线不显示其legend,即可使用该属性,控制方式如下:通过学习此方法,自己做个例子:我们绘制几条曲线,然后控制有些显示图例,有些不显示:比如绘制正弦、余弦、指数以及衰减正弦,图例只显示正弦和指数。代码:x = -3.14:0.1:3.14;y1 = sin(x);y2 = cos(x);y3 = .1*exp(x);y4 = y1.*y3;hold onh1 = plot(x, y1, r);h2 = plot(x, y2, g);h3 = plot(x, y3, k);h4 = plot(x, y4, m);hold offxlim autoset(get(get(h2, Annotation), LegendInformation), IconDisplayStyle, off);set(get(get(h4, Annotation), LegendInformation), IconDisplayStyle, off);legend(sin, exp);结果:上述方法可能不是最好的解决方法,因为当想画出所有的legend后,把它重新排列成nXm,而不是一竖行,目前还没找到解决的办法。但是可以得出一个结论,MATLAB学习,不光是在课堂上听王老师说,课后还得上论坛看看,可以学习到很多知识和方法。五、MATLAB学习点滴之学习MATLAB的乐趣 代码简化:No,Ns=size(t);No,Ns=size(y);for i=1:Nosum_te=0;for j= 1:Ns sum_te=sum_te+abs(t(i,j)-y(i,j)/t(i,j)*100);% 序列t和y的相对误差绝对值之和enderr(i)=sum_te/Ns;% 平均相对误差绝对值end-No,Ns=size(t);sa=sum(abs(t-y)./t*100),2);sb=sa./Ns; 我个人觉得,学习一门语言,最大的乐趣肯定是能编出代码。编出代码之后能对其进行简化,更是其乐无穷。作为MATLAB初学者,我觉得在一个问题上进行反复推敲,必能进步,也能增加学习的乐趣。看着别人一大堆代码,而自己几行就能实现,而且功能相同,是件很愉快的事情。MATLAB学习点滴之学习心得:matlab跟其他语言不一样(我用的比较多的编程语言,除了matlab就应该是c或c了,java也接触过,我想版面(matlab版)大部分人也差不多),如果你抱着“把其他语言的思想运用在matlab里面”的话,那么我想,即使程序运行不出错,也很难把握matlab的精髓,也就很难发挥matlab的作用了。Matlab是一个基于矩阵运算的软件,这恐怕是众所周知的事情了,但是,真正在运用的时候(就是在编程的时候),许多人(特别是初学者)往往没有注意到这个问题,因此,for循环(包括while循环)满天飞.这不仅是暴殄天物(没有发挥matlab所长),还浪费了宝贵的时间。我这里想说的一点是,初学者往往在初始化矩阵的时候注意到这个问题,懂得了使用矩阵而不是循环来赋值,但是,在其他环节上,就很容易疏忽,或者说,仍然没有摆脱C的思想。举个例子: J = 0;lt = size(imf1,2);for (i = 1:lt)if (abs(imf1(i) 1)J = 1;breakendend上面的代码实现了一个目的检查信号imf1(一个向量)是否存在绝对值大于1的点,这显然是基于C的思想写出来的。如果在matlab下面,其实用两个语句就足够了(当然,可以合并为一个):q = find(imf11);J = isempty(q);这样的修改带来的好处是很可观的。又如:for j = 1:numimf1(start1+j) = 2*li1(j+1) - imf1(start1+j);end这是一个对称翻折的问题,它完全可以用以下这个语句简洁表示:imf1(start1+1:start1+num) = 2*li1(2:num+1) - imf1(start1+1:start1+num);因此,如果是新手,可以先用循环(基于C的思想)来编写代码,然后看看能否用matlab的语言(基于矩阵的思想)来改进。当然,这样做的前提是你对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年消防设施操作员资格考试题库(含消防器材识别与应用)
- 2025年专升本艺术概论考试模拟卷:艺术与科技融合趋势解析试题
- 2025年护士康复护理学执业资格考试题库试卷
- 2025年小学教师资格考试《综合素质》教育创新实践题解题全解析试卷
- 2025年中学教师资格考试《综合素质》教育理念辨析题真题模拟(含答案)
- 2025病历书写法试题及答案
- 2025年乡村医生农村慢性病管理试题集:慢性病管理未来发展趋势
- 2025年期货从业资格考试法律法规核心考点全解试卷
- 2025年安全生产风险分级管控安全技能试题集
- 2025年初中地理学业水平考试模拟卷:地质灾害防治与应急处理试题及答案
- 初中七年级数学备课组科研合作计划
- 《人工智能应用基础》 完整课件(共十个模块-上)
- 职业技术学院旅游管理专业《旅行社经营与管理》课程标准
- 奶茶店股份合作合同协议
- 2025-2030中国空气粒子计数器行业市场发展趋势与前景展望战略研究报告
- 立杆方法分类普通电杆的组立系列课件
- 四年级音标试卷及答案
- 学校食堂运营管理职责与分工
- 2025云南师范大学辅导员考试题库
- BEC商务英语(中级)阅读模拟试卷11(共405题)
- 语文课堂教学目标设计“四出发”
评论
0/150
提交评论