網站首頁 編程語言 正文
如何在1個Matlab m文件中定義多個函數直接運行
簡介
編寫運行程序會遇到“此上下文中不允許函數定義”錯誤。如果仍希望將全部程序放入一個m文件中,并可以直接運行出結果,該程序包括主程序及主程序中使用的函數,這些函數內容也會寫在同一m文件中,則需要用“function main”聲明主函數,即主程序,同時也要合理使用全局變量,向多個函數傳遞中間參數值。接下來將用實例介紹,如何定義全局變量,如何編寫出可執行的,包含多個自定義函數的程序。
解決方法
1.這里編寫一段程序想實現,計算(A+B+C)/D的功能,直接引用自定義add函數即可實現此求和做除的功能,其中A、B、C作為全局變量,不需作為函數參數輸入,因為D為聲明全局變量,所以要作為函數參數輸入。
clc
clear all;
global a
global b
global c
a=1;
b=2;
c=3;
d=10;
disp(10);
e=add(d)
function w=add(d)
global a
global b
global c
w=(a+b+c)/d;
2.從中可以看到全局變量的使用方法,即先要聲明再賦值,最后如果在函數中直接使用,需要在函數體中再次聲明該變量為全局定義。
clc
clear all;
%聲明全局變量a,b,c
global a
global b
global c
%變量賦值
a=1;
b=2;
c=3;
d=10;
e=add(d)
function w=add(d)
%函數內也要聲明全局變量
global a
global b
global c
w=(a+b+c)/d;
3.此時如果點擊m程序上的“運行”,則可在結果界面看到此錯誤,提示不允許這樣定義函數,這時可通過聲明主函數解決。
4.這里加入如下第一句主函數聲明語句后,編譯框會自動識別出函數范圍,使函數變為可折疊狀態,不像之前,無法區分主程序和函數。
%聲明函數main(可以起另一個名字)后,就不會出錯了
function main
clc
clear all;
global a
global b
global c
a=1;
b=2;
c=3;
d=10;
disp(10);
e=add(d)
function w=add(d)
global a
global b
global c
w=(a+b+c)/d;
5.程序識別出函數后,即可進行折疊,如果一個程序中有較長的主程序和較多函數,即可邊編輯程序,邊進行折疊,使其看起來更簡潔。
6.此時運行后,就沒有錯誤提示,可以直接計算出結果,根據計算公式,可以知道此結果是正確的。這樣如何定義全局變量,如何將所有函數放入一個文件,介紹完成。
另外注意的點
在一個m文件中寫多個函數,每個函數都以function開始,結束可以帶end,也可以不帶(這種情況下,出現另一個function或者到達文件結尾表明前一個function結束).
第一個函數作為主函數,可以從該m文件外部調用,其它函數都是局部函數,只能被m文件中的函數調用.主函數命名最好和m文件名相同,如果不同,則調用時應該使用m文件名(不帶擴展名).
原文鏈接:https://blog.csdn.net/weixin_37610397/article/details/80441523
相關推薦
- 2022-01-21 Docker報錯:OCI runtime exec failed: exec failed: con
- 2022-11-15 如何將Android?Studio卸載干凈_Android
- 2024-03-01 【websocket】前端websocket 實時通信
- 2024-07-15 linux系統管理高級命令(練習)(six day)
- 2023-04-24 一文帶你深入了解C++中音頻PCM數據_C 語言
- 2022-12-15 python將二維數組升為一維數組或二維降為一維方法實例_python
- 2022-08-30 C語言深入探究sizeof與整型數據存儲及數據類型取值范圍_C 語言
- 2022-08-12 如何實現在pycharm中將.ui文件轉化為.py文件_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支