목차
回复内容:
백엔드 개발 파이썬 튜토리얼 怎样用 Matlab 写出优雅的代码?

怎样用 Matlab 写出优雅的代码?

Jun 06, 2016 pm 04:23 PM
gui matlab

看着大家在这个问题(为什么不少程序员认为Matlab的语言设计不优雅甚至比较丑?能否举出一些例子来说明? - 数学)下面吐槽,背上凉飕飕的。因为组里的历史原因,换语言不现实。。。
我自己的体验是用matlab写小规模(1000行以内)的gui很快速,交互性不是特别强的gui可以直接用guide搞定。但是代码的复杂度随着代码长度的平方上升。
求问怎样改善用matlab写代码的程序风格,写出简明易维护的程序呢?

回复内容:

想到哪说哪,有点乱。

用deal实现Python中的“一行赋多值”。
<span class="p">[</span><span class="n">H</span><span class="p">,</span> <span class="n">W</span><span class="p">,</span> <span class="n">N</span><span class="p">]</span> <span class="p">=</span> <span class="n">deal</span><span class="p">(</span><span class="mi">42</span><span class="p">);</span>         <span class="c">% H = 42, W = 42, N = 42</span>
<span class="p">[</span><span class="n">H</span><span class="p">,</span> <span class="n">W</span><span class="p">,</span> <span class="n">N</span><span class="p">]</span> <span class="p">=</span> <span class="n">deal</span><span class="p">(</span><span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">,</span> <span class="mi">32</span><span class="p">);</span> <span class="c">% H = 28, W = 28, N = 32, respectively</span>
로그인 후 복사
啊谢谢师兄@渡子厄邀请。
并不是很会写MATLAB,我只是说一说看到的MATLAB代码的一些问题和建议。

第一是设计模式,
一些的MATLAB工程师并没有设计模式,一般都是把一个小过程式的demo扩充成为一个大程序,代码中有很多重复的代码,其实在基于命令行的demo完成之后就应该考虑要设计一个怎么样的程序,然后推倒重来,减少每一行没有必要的代码,利用每个可以利用的数据。

第二是数据结构的管理,
MATLAB提供了很方便的一些数据结构,如何善用他们是一个很大的问题,在这方面,应该说是尽量减少每一行自己手写的代码,在用每个功能前Google一下是否有内建支持,花十分钟看一下文档理解内建支持有何优劣之处,然后使用MATLAB语言设计者的思维来写MATLAB。
MATLAB使用者似乎很喜欢使用全局变量,这本身其实无可厚非,全局变量有时候会导致程序出一些问题,可以使用类似于命名空间的方法加以区分。

第三是代码的管理,
业余程序员有时候会有一个问题,就使用注释复制粘贴和压缩文件来管理代码,这样在稍微庞大的系统中代码就会变得不可读,而且工程人员自己也不知道自己在干什么,这方面我的建议是花一个下午时间学习一下git

第四是结构上的分离,
在设计GUI的时候可以尽量符合MVC,视图,控制,数据分离,尽量每个.m文件拥有各自的功能,每个函数逻辑分离。当然可以做的轻量级一些。个人不喜欢把文件放的太长。

第五是使用更高阶的编程范式,
MATLAB可以写的OO一些,不过MATLAB对于函数式编程的支持不是很好,因为写的不多就不多谈了。

以上是我读一些工程师,科学家的代码看到的一些问题,并不仅限于MATLAB,如有不当还请多指教。 唉我来慢慢更新自己的学习笔记吧。

1. 代码风格:
提完问题顺手谷歌了一下,下面这个guideline可以参考:
MATLAB Style Guidelines 2.0

2. 怎样优雅地写gui
Stackoverflow中解决gui代码糟糕的问题:matlab - What's the "right" way to organize GUI code?
官方文档:Writing Apps in MATLAB
范例:File Exchange 里一个使用OO写gui的范例,看起来很棒。

3. 使用APP功能“封装”程序

4. Google
没必要自己重新造轮子,大部分问题都是有人遇到过并且解决过的。因此遇到几分钟以内解决不了的问题,可以Google一下解决方法。毕竟大部分matlab使用者都不是程序开发专家,大多数时候Get things done才是好的工作态度。
这里还有另外一个问题:
基础不好,遇到问题连搜什么关键词都不知道。
我的笨办法是问师兄师弟、去stackoverflow和Mathwork网站上提问,或者干脆把书快速扫一遍,只注意概念和定义,忽略技术细节。

5.用正版
如果有条件用正版的话,就用正版吧,遇到问题可以直接呼叫Mathwork技术支持,也可以节省很多时间。

唉看起来matlab好像也不是那么无药可救呢 我是做工程应用的,我觉得一个好的算法只有得到应用才是好的算法,所以我个人不推崇使用natlab的GUI,matlab做算法分析简洁高效,逻辑够复杂,人机交互没有必要做matlab的GUI。

其实上面的回答都是关于OO以上的风格,因为设计思想的原因。设计模式的思想是可以用,前提是你本来就用得比较熟,在matlab中边学边用还是算了吧。

我觉得能够直接按原文转化为C++的matlab程序才是好程序,这才是一个算法脱离理论,投入应用的终极归宿。

话说回来,当可以没有障碍地用C++做算法的时候,你就轻易不想再回来用matlab了,除非是一些中间过程要繁琐显示的才拿matlab分析一下。

话说回来,我个人觉得windows和matlab对中国大学生的伤害之大其实难以估量,我们一开始就用上了最为高大上的成熟工具,却忽视了他们的底层实现和设计思想,知道和实现过是两种层次,在需要创造性的时候经验和手段就能显现作用,不能抢了先机、失了后手,如果有读大学的孩子的话,建议用用那些开源的操作系统和数值算法,不要贪图方便,在最需要思考和实践的年龄自废武功,把思考和实践的楼阁建在了空中。 MATLAB大法真的好!但就是不喜欢。
同问为何。
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

ttkbootstrap을 사용하여 Python GUI를 위한 아름다운 인터페이스를 만드는 방법은 무엇입니까? ttkbootstrap을 사용하여 Python GUI를 위한 아름다운 인터페이스를 만드는 방법은 무엇입니까? May 07, 2023 pm 03:40 PM

이 두 사진은 공식 웹사이트에서 제공하는 디스플레이 렌더링의 스크린샷입니다. 테마 전환은 간단한 테마 전환입니다. 현재 창에 구성 요소가 거의 없기 때문에 효과가 뚜렷하지는 않지만, 구성 요소가 많을 때는 보기에 좋을 것입니다. 배치. importttkbootstrapasttkfromttkbootstrap.constantsimport*root=ttk.Window()style=ttk.Style()theme_names=style.theme_names()#목록 형식으로 여러 테마 이름 반환 theme_selection=ttk.Frame(root,padding=(10,10)

Matlab과 함께 제공되는 Java 작업은 무엇입니까? Matlab과 함께 제공되는 Java 작업은 무엇입니까? May 03, 2023 pm 04:07 PM

1. 마우스의 전체 화면 위치를 가져옵니다. 화면의 왼쪽 상단이 좌표 원점입니다. 마우스 위치를 가져오고 마우스 픽셀 색상을 가져오려면 while 루프 또는 타이머와 함께 사용하는 것이 좋습니다. 함수: importjava.awt.MouseInfo;mousepoint=MouseInfo.getPointerInfo().getLocation();mousepoint =[mousepoint.x,mousepoint.y]2 현재 클립보드 내용 가져오기 importjava.awt.Toolkitimportjava.awt.datatransfer.DataFlavorclip=

Python 팁은 Gui를 사용하지 않고도 그래픽 인터페이스를 구현할 수 있습니다. Python 팁은 Gui를 사용하지 않고도 그래픽 인터페이스를 구현할 수 있습니다. Apr 12, 2023 pm 04:43 PM

프로그래머가 두려워하는 것이 있다면 아마도 그럴 것입니다. 요구 사항이 다시 변경되었습니다. 아니요, 작성자가 브라우저 기반 웹 애플리케이션을 개발한 후 고객은 다음과 같이 말했습니다. 프로그램에는 내부(없음) 부품이 필요합니다( network) ) 환경... 이것은 Python 환경을 설치할 수 없다는 것을 의미합니다! 누가 우리를 프로그래머라고 부르나요? 그냥 GUI 버전을 개발하는 것은 어떻습니까? 진정할 수 없었습니다... ...고객의 평가에 영향을 주지 않으려면 일주일밖에 시간을 주지 않습니다. GUI를 구상하는 것은 어렵지 않지만 서비스와 대화형 인터페이스를 정리해야 합니다! 그렇지 않다면 GUI를 위한 별도의 인터페이스를 작성해야 하는데, 이는 확실히 시간이 부족합니다. 아니요, 다른 방법을 생각해 봅시다...그렇지 않으면 그냥 웹을 사용할 수도 있습니다.

Python 텍스트 터미널 GUI 프레임워크, 정말 멋지네요. Python 텍스트 터미널 GUI 프레임워크, 정말 멋지네요. Apr 12, 2023 pm 12:52 PM

저주 가장 먼저 나타나는 것은 저주[1]입니다. CurseCurses는 텍스트 기반 터미널 창 기능을 제공하는 동적 라이브러리입니다. 전체 화면을 사용하여 창 생성 및 관리 8가지 색상 사용 프로그램에 대한 마우스 지원 제공 키보드의 기능 키 사용 저주는 모든 ANSI/POSIX에서 사용할 수 있습니다. 준수 표준 Unix/Linux 시스템에서 실행됩니다. Windows에서도 실행할 수 있지만 windows-curses 라이브러리를 추가로 설치해야 합니다. pip install windows-curses 위 그림은 Curses를 사용하는 친구가 작성했습니다.

Python Tkinter GUI 프로그래밍에서 프레임 전환을 구현하는 방법 Python Tkinter GUI 프로그래밍에서 프레임 전환을 구현하는 방법 May 11, 2023 pm 04:25 PM

1. Frame의 tkraise() 메소드 소개 일반적으로 Tkinter 애플리케이션은 여러 프레임으로 구성됩니다. 그리고 사용자 선택과 관련된 프레임을 표시하기 위해 프레임 간에 전환해야 하는 경우도 많습니다. Tkinter에서는 프레임을 서로 쌓을 수 있습니다. 특정 프레임을 표시하려면 쌓인 순서대로 프레임을 다른 프레임 위에 놓으면 됩니다. 상단 프레임이 표시됩니다. Frame을 맨 위에 놓으려면 아래와 같이 Frame 위젯의 tkraise() 메소드를 사용할 수 있습니다. .다른 프레임

Scilab과 MATLAB의 차이점 Scilab과 MATLAB의 차이점 Dec 11, 2023 am 11:13 AM

scilab과 matlab의 차이점: 1. 주석 기호, 2. 연산자 사용, 4. 행렬 정의 및 실행, 6. 데이터 유형, 8. 그래픽 인터페이스 9. 커뮤니티 지원 및 생태계 10. 플랫폼 간 호환성 자세한 소개: 1. 주석 기호 Scilab에서는 주석이 "//"로 안내되는 반면, Matlab에서는 주석이 "%"로 안내됩니다. 2. Scilab 등에서 사전 설정된 변수 표시.

Python GUI 레이아웃 도구 Tkinter를 사용하는 방법 Python GUI 레이아웃 도구 Tkinter를 사용하는 방법 May 09, 2023 pm 02:16 PM

그래픽 사용자 인터페이스(GUI) 그래픽 사용자 인터페이스(GUI)는 컴퓨터와 상호 작용하는 데 도움이 되는 데스크톱 응용 프로그램일 뿐입니다. 텍스트 편집기와 같은 GUI 응용 프로그램은 다양한 유형의 파일을 생성, 읽기, 업데이트 및 삭제할 수 있습니다. Solitaire, Chess 및 Solitaire와 같은 응용 프로그램은 GUI 프로그램의 게임 버전이며 Google Chrome, Firefox 및 Microsoft Edge와 같은 GUI 응용 프로그램은 우리 컴퓨터에서 사용하는 다양한 유형의 GUI 중 일부입니다. 실제로 우리는 Tkinter를 통해 간단하고 유사한 애플리케이션을 구축할 수도 있습니다. 오늘은 GUI에 대한 소개로 매우 간단한 애플리케이션을 만들어보겠습니다.

MATLAB에서 좌표를 수정하는 방법 MATLAB에서 좌표를 수정하는 방법 Dec 15, 2023 am 10:40 AM

MATLAB에서는 "set" 함수를 사용하여 그래프의 축 속성을 수정할 수 있습니다. 자세한 소개: 1. 좌표축 범위 수정: set(gca, 'XLim', [0 10], 'YLim', [0 10]) 2. 좌표축 라벨 수정: set(gca, 'XLabel', 'My X축', 'YLabel', 'My Y축') 3. 좌표축의 배율 등을 수정합니다.

See all articles