: | : | :期货量化学习 | :期货量化 |
返回列表 发帖

〖Quant〗新手怎么学Matlab?

〖Quant〗新手怎么学Matlab?

MATLAB 是美国MathWorks公司出品的商业数学软件用于算法开发数据可视化数据分析以及数值计算的高级技术计算语言和交互式环境主要包括MATLAB和Simulink两大部分MATLAB应用非常之广泛

是由美国mathworks公司发布的主要面对科学计算可视化以及交互式程序设计的高科技计算环境它将数值分析矩阵计算科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中为科学研究工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案并在很大程度上摆脱了传统非交互式程序设计语言如CFortran的编辑模式代表了当今国际科学计算软件的先进水平

MATLAB和MathematicaMaple并称为三大数学软件它在数学类科技应用软件中在数值计算方面首屈一指MATLAB可以进行矩阵运算绘制函数和数据实现算法创建用户界面连接其他编程语言的程序等主要应用于工程计算控制设计信号处理与通讯图像处理信号检测金融建模设计与分析等领域

MATLAB的基本数据单位是矩阵它的指令表达式与数学工程中常用的形式十分相似故用MATLAB来解算问题要比用CFORTRAN等语言完成相同的事情简捷得多并且MATLAB也吸收了像Maple等软件的优点使MATLAB成为一个强大的数学软件在新的版本中也加入了对CFORTRANC++JAVA的支持可以直接调用用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用此外许多的MATLAB爱好者都编写了一些经典的程序用户直接进行下载就可以用


新手怎么学Matlab


编程是一门手艺活
首先我想说的是matlab跟其他语言不一样我用的比较多的编程语言除了matlab就应该是c或c++了VB和Delphi也接触过我想版面(matlab版)大部分人也差不多),如果你抱着把其他语言的思想运用在matlab里面的话那么我想即使程序运行不出错也很难把握matlab的精髓也就很难发挥matlab的作用了所以如果你是希望matlab作为VC的附属品即你不想在matlab上面花太多功夫只纯粹想用matlab来完成VC做不了或很难做成的任务的话那么这篇文章你也不需要再阅读下去了如果你是希望掌握一门语言一个工具使它更有效为你服务的话那么希望本文对你有所帮助

Matlab是一个基于矩阵运算的软件这恐怕是众所周知的事情了但是真正在运用的时候就是在编程的时候),许多人特别是初学者往往没有注意到这个问题因此for循环包括while循环满天飞…………..这不仅是暴殄天物没有发挥matlab所长),还浪费了你宝贵的时间对此版友MVH在他的MATLAB 小技巧一文中也有所涉及雷同的东西我也就不重复了matlab的帮助里面也有相关的指示我这里想说的一点是初学者往往在初始化矩阵的时候注意到这个问题懂得了使用矩阵而不是循环来赋值但是在其他环节上就很容易疏忽或者说仍然没有摆脱C++的思想举个例子吧下面的代码是我的一个师弟写的我想他接触matlab也有23年时间了在此说明一下接触23年并不是表示每天都会跟matlab打交道我本人也不是只是在一年某几个时间段里面连续使用),但是仍然会出现类似的问题

上面的代码实现了一个目的――检查信号imf1一个向量是否存在绝对值大于1的点这显然是基于C++的思想写出来的如果在matlab下面其实用两个语句就足够了当然可以合并为一个):

这样的修改带来的好处是很可观的又如

这是一个对称翻折的问题它完全可以用以下这个语句简洁表示

因此如果是新手可以先用循环基于C++的思想来编写代码然后看看能否用matlab的语言基于矩阵的思想来改进当然这样做的前提是你对matlab提供的一些函数比较熟悉才行这些函数在matlab的帮助那里搜索Functions Used in Vectorizing就可以找到一些其他的也可以找相关的书籍没找到不可能电子版总可以下载到的!

对提高matlab编程能力的方法我想主要有以下三个
1. 查help
2. 多上上论坛搜索帖子发帖子问人
3. 阅读别人特别是牛人的程序

当然了正如所有的程序语言一样,“3分课本7分上机”,一定要动手才行不能光看多想多思考多尝试才是正路

最后整理一下常用的快捷键【】表示或命令

1. 在命令窗口(Command Window)中

1) 下键――切换到之前之后的命令可以重复按多次来达到你想要的命令
2) clc――清除命令窗口显示的语句此命令并不清空当前工作区的变量仅仅是把屏幕上显示出来的语句清除掉
3) clear――这个才是清空当前工作区的变量命令常用语句clear all来完成
4) Tab键――转自版友心灯在matlab@hit.edu.cn看到的在command窗口输入一个命令的前几个字符然后按tab键会弹出前面含这几个字符的所有命令找到你要的命令回车就可以自动完成目前讨论结果是matlab6.5版本中如果候选命令超过100个则不显示而在matlab7以后版本中则没有这个限制均可正常提示
5) Ctrl+C】(Ctrl+Break】)在matlab程序运行过程中可能由于程序编写的失误导致程序不停的运行在命令窗口输入Ctrl+C可以将运行的程序停下来而不需要将整个Matlab程序关掉不过进行此操作的前提是能够激活切换到命令窗口才行呵呵

2. 在编辑器(Editor)中

1) Tab】(Ctrl+]】)――增加缩进对多行有效
2) Ctrl+[】--减少缩进对多行有效
3) Ctrl+I】--自动缩进即自动排版对多行有效
4) Ctrl+R――注释对多行有效
5) Ctrl+T――去掉注释对多行有效
6) Ctrl+B――括号配对检查对版本6.5有效但版本7.0无效不知道是取消了还是换了另外的快捷键其他版本没有测试过
7) F12――设置或取消断点
8) F5――运行程序

其余的例如在Debug状态下的快捷键就不多说了自己看菜单Debug吧!

那些让你欲罢不能的小命令
我很喜欢上了matlab的简单的语法,易于绘制图形,gui编程也非常容易, 并且功能强大的开放式的toolbox因此,现将个人的matlab的一点学习体会列在这里,愿能够对大家(特别是初学者)起到一点儿微薄的作用也好

help:最有效的命令
其实,可以这样说吧,如果离开matlab软件,我想我自己是基本上什么都不会一遇到什么问题,通常我的第一反应是:help就先说说自己对help的一些常用方法吧

1命令窗口直接敲help”,你就可以得到本地机器上matlab的基本的帮助信息
2对于某些不是很明确的命令只知道大体所属范围譬如说某个工具箱直接在命令窗口中敲入help toolboxname一帮可以得到本工具箱有关的信息版本号函数名等
3知道函数名直接用helpfunname就可以得到相应的帮助信息

2. see also不可小瞧的关联
在用help命令的时候可能因为我们开始估计的方向不一定完全正确在列出的帮助信息中没有直接给出的我们要找的东西但是我们一定不要忽略了在帮助的最后列出的see also

譬如曾经遇到一个画椭球的问题刚开始我以为这个命令函数应该在graph3d中给出的顺带提一句只用help的时候我们就可以看到matlab\graph3d - Three dimensional graphs.于是乎我又help graph3d很遗憾在 Elementary 3-D plots.中我没有发现画椭球的函数但是我发现在see also中有SPECGRAPH. 抱着试试的态度我又help specgraph^_^这次在 Solid modeling 中找到了ellipsoid - Generateellipsoid

3. lookfor: matlab中的google
当我们很多什么头绪都没有的时候,我们可以求助于它往往会收到意想不到的效果
譬如曾经在gui编程的时候遇到过这样一个问题想拖动鼠标时要出现一个方框就像你在桌面上拖动鼠标会出现虚线框一样当初我也刚开始一定都不知道该查找什么东西后来想起用它了于是乎>> lookfor Rectangle 很不好意思当时这个矩形我还是在金山词霸中搞定的-_-)。果然在其中就找到这样一条信息GETRECT Selectrectangle with mouse.^_^

4. get,set: GUI object 属性的帮手
在GUI编程中我们可能有时候想改变某些object的属性或者想让它安装自己的想法实现但是我们又不记得这些object的属性更别提怎么设置他们的值了这时可以用 gethandles得到此对象的所有的属及其当前值用sethandles可以得到对象所有可以设置的属性及其可能的取值找到我们需要的属性名字和可能的取值之后就意义用 gethandles,‘propertyname’)取得此属性的值用sethandles,‘propertyname’,values设置此对象此属性的值

最后matlab只是一个很好的应用工具而已也不像vcdelphivb等开发工具最多的还是应用于算法的验证仿真等我们应该的是尽可能的知道一点儿基础的然后熟悉本专业的toolbox

作者:量化投资Quant
链接:https://xueqiu.com/5256769224/32778342
来源:雪球
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
风险提示:本文所提到的观点仅代表个人的意见,所涉及标的不作推荐,据此买卖,风险自负。

论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

返回列表