How To Design a Class With Matlab

编程入门 行业动态 更新时间:2024-10-12 16:22:58

How To <a href=https://www.elefans.com/category/jswz/34/1767837.html style=Design a Class With Matlab"/>

How To Design a Class With Matlab

也许你永远也不知道大学里学matlab有啥用。

工作中陆陆续续接触过matlab,仅仅限于简单的计算功能。最近小组里需要有人将SPG的算法从VBA移植成matlab的,很不行中枪了。上头说了,最好用面向对象的思想开发一下。啥?我没听错吧,matlab还能面向对象?只能问一下度娘,居然还真的是,但是网上的帖子的内容出处类似,翻来翻去其实就那么两三个例子,无奈浅尝辄止了一番,最后还得自己看帮助文档去,万恶的英文帮助。不吐槽了,总结一下最近学习matlab的心得吧。

好在自己有点CPP的底子,带蒙带抄写了一个类。

<pre name="code" class="plain"><span style="font-family:Arial;">classdef studentpropertiesname;age;height;endmethodsfunction obj = student()obj.name = 'Unknow';	obj.age = 0;obj.height = 0;endfunction setheight(obj, height)obj.height = height;endendend</span>

 
 
一个 
简单的类,看起来不错,当我实例化一个对象后,成功调用了构造函数,但是当我调用setheight方法后,对象的height死活不变,还是0,万事开头难啊,看帮助文件,知道如果写的话,调用方法会生成一个新的对象,不能改变原有的对象的属性。解决的方法就是让student类继承handle类,问题迎刃而解。当然中间还走了不少弯路,我一开始把生成的新对象重新赋给了原来的对象,虽然也行,但是感觉怪怪的,CPP的编程风格深深映射在我的脑子里了。 

有了这些基础我就继续coding去了,知道写完之后,调试的时候又出问题了。

<span style="font-family:Arial;">classdef student < handlepropertiesname;age;height;endmethodsfunction obj = student()obj.name = 'Unknow';endfunction newH = transH(height)newH = height/100;endfunction setHeight(obj, height)obj.height = student.transH(height);endendend</span>
新的类是这样的,多了一个和属性没有直接联系的方法,结果提示找不到transH这个方法,这个matlab真是烦人。我先开始没有找到合理的解决方法,妥协了,试了一下给transH方法多传了一个obj进去,结果还真行,编辑器又提示我这个ob在 transH中没有使用,哦滴个神呐,真拿你没办法!

一波三折,长话短说,终于实现了需求

<span style="font-family:Arial;">classdef student < handlepropertiesname;age;height;endmethods (Static = true)function newH = transH(height)newH = height/100;endendmethodsfunction obj = student()obj.name = 'Unknow';endfunction setHeight(obj, height)obj.height = student.transH(height);endendend</span>
把transH方法写成静态的Static,这样只和类有关,与对象没有直接的关系。同时调用的时候需要在写成student.transH,这个细节有困扰了我很久,最后还是在help上找到的答案。
第一篇博客,献给工作两年的自己。加油Sherry!

 


更多推荐

How To Design a Class With Matlab

本文发布于:2024-03-09 16:47:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1725512.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Design   Class   Matlab

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!