matlab符号系统
matlab解決問題的最基本思路是建立腳本文件,那么腳本文件的第一段就是定義一些變量,這和C語言等編程思想是一樣的。matlab提供的變量類型很多,最基礎的是三種:數值變量、符號變量、字符串,其他的類型還有cell、table等。這里僅說明最基礎的變量類型。
其實matlab現在仍然在發展,有越來越多的新的工具箱出現,比如:神經網絡,微分方程,深度學習,simulink,以及一些特定的工程文件(不同專業不同需求,matlab受眾面很廣)等等,所以的話也會有一些特定的數據類型,或者基礎上的一些專用變量以及編程方式。
1.數值變量
matlab中所有的數值變量都是矩陣,賦值時,以方括號作為開頭和結尾,以英文逗號或空格分割同行元素,以英文分號分割各列。例如在Command Window里輸入a=[1 2;3 4]
可以看到運算結果,a是一個數值變量。同時workspace里出現一個田字形的變量a,說明變量a的類型是數值型。
向量和數字可以視為特殊的矩陣,例如
a=[1 2]
a=[1;2]
分別是行向量和列向量。
a=[1] 可以簡寫為a=1 是數字。
數值變量的命名要求是英文字母開頭,不能包含特殊符號,大小寫敏感。這里推薦采用下劃線來進行分割,例如value_of_A,這和其他編程語言的命名規則大體相當。
賦值中,有時需要用到等差數列,例如定義一個向量a=[1 2 3],如果比較長,賦值很麻煩,所以matlab提供了一個簡單的方法
a=[1:1:3]
這里兩個冒號的意思是起始值:步長:終值。采用這種賦值方式時可以獲得一個等差數列行向量,并可以省略兩側的方括號。當步長為1時,可以省略步長和一個冒號,于是可以簡寫為
a=1:3
另一種靈活的賦值方法是分塊矩陣,其方法是變量名后面加圓括號,圓括號中加序號。例如
a=[1 2;3 4]
定義變量a之后,
b=a(1,2)
就可以把a的第一行第二列元素賦值給b,當然也可以用
a(1,2)=1
來修改矩陣中部分元素的值。這里需要注意,序號必須是自然數,且不能是零。當矩陣中有多個元素需要賦值時,可以將序號部分改成向量,例如
a([1 2],[1 2])=[1 2;3 4]
中把行數和列數都用向量表示,就是說對矩陣a的第1和2行,第1和2列,總共4個元素賦值。更進一步,也可以有a([1 2],1)表示a的第一列,也可以寫成
a(1:end,1)
這里的end表示終點,即a的行數2,也可以更進一步簡寫成
a(:,1)
這里的冒號表示從頭至尾。這類賦值方法最為常用,但基本的語法非常簡單,方括號表示矩陣開頭和結尾,圓括號表示從矩陣中選取部分,把握這個原則,有利于讀懂程序。
當然分塊矩陣也可以
b=[a a]
這樣的賦值方法,但需要注意的是,方括號中的元素必須滿足矩陣的行列數要求,例如
a=[1 1]
b=[1;1]
c=[a b]
就會引起錯誤,因為此時matlab無法確定c的行列數。
2.符號變量
總體而言,符號變量比數值變量簡單得多,因為變化非常少,常用的賦值命令是
syms a b
syms表示這里要定義一些符號變量,a和b是變量名,符號變量的命名規則和數值變量一樣。有時候也采用
syms a real
來強調a是實數變量,具體可以doc syms來獲得幫助。
有些變量之間存在依賴關系,此時可以定義
syms x y(x)
這里聲明x是一個符號變量,又聲明y是一個符號變量,且y的值由x決定,這相當于數學中函數的概念。當然具體的函數關系并沒有明確規定。也可以
syms x y z(x,y)
來定義符號變量z,z依賴x和y。這相當于二元函數的概念。這里的圓括號顯然和數值變量中的圓括號含義完全不同,這也是學習matlab最不習慣的地方,同一個符號,由于變量類型不同會有完全不同的含義。所以在學習matlab的過程中,一定要區分數值變量和符號變量。
上述方法定義的符號變量是一個數,或者1*1矩陣,matlab中也可以定義符號矩陣,例如
syms a11 a12 a21 a22
A=[a11 a12;a21 a22]
就可以獲得一個矩陣符號變量A。
定義符號變量后,workspace中出現相應的變量名,圖形不是數值變量的田字形,而是方框里有個立方體,雙擊后可以看到行列數。
3.字符串
很多編程語言都把字符串當做單獨的一種數據類型,畢竟字符這種東西(包括數字,也可以成為字符),在計算機里面都是需要以數值表示(存儲與運算)的,區別于能直接使用數值變量等數據類型,其實函數,類(也就是你的代碼塊)本身也是字符,但是在計算機中也會幫你轉化成特定位置的特定數值(二進制),所以c語言就有了數據(變量)棧區,堆區(動態,靜態,常量,變量等),程序文件存儲(執行操作與跳轉,本身也會變成數據,程序數據)區,它的數值代表的含義可能就與普通的變量有所不同,所以數據變量(普通各種基本數據(各種精度)),以及字符串類型。雖然這些編程語言自動幫我們完成了,我們往往不用操心,直接使用即可。
比數值、符號更為簡單的就是字符串了,其定義方法是以單引號開頭和結尾,例如
a=‘hello world’
就定義了一個字符串a,其值為你好世界。matlab中較為特殊的是,字符串可視為行向量,例如
b='hello ’
c=‘world’
a=[b c]
也可以獲得字符串a,其值為你好世界。另外,有時也可以將字符串視為矩陣,例如
a=[‘ab’;‘cd’]
但這種用法很罕見,同時要求各行字符串長度一樣,否則將違反矩陣行列數規定。
當然字符串的值也可以是特殊符號,比如
',
就定義了逗號,而最特殊的就是定義單引號,因為單引號會和字符串定義中的單引號混淆,因此matlab中用兩個單引號表示一個單引號,也就是
a=’’’’
表示a是一個字符變量,值是一個單引號。語句中第一和第四個單引號是字符串類型的開頭和結尾,中間兩個單引號用來表示一個單引號。
定義字符串變量后,workspace中出現相應的變量名,圖像是方框里寫了ch,雙擊后可以看到行列數。
以上參考:https://blog.csdn.net/weixin_42717711/article/details/82620634
下面主要詳細講一下符號變量,這個是其他編程語言不太常見的。。
Matlab如何定義符號變量?
如下面的例子,未定義就會出錯。符號變量定義方法例如: sym x 或者 syms x ,兩者有區別也有共同點。
其他變量的定義:
計算過程當中的存儲數值的變量
可以不必定義,隨時需要,隨時定義,但是有時候如果變量很多,那么最好提前聲明,聲明的時候,可以直接賦予0值,并且注釋,這樣方便以后區分,避免混淆。
矩陣和向量
對于矩陣一般都是需要定義的,定義好矩陣之后,才方便訪問/修改矩陣的指定元素,矩陣聲明(定義)的方法,常用的 就是聲明為零矩陣zeros(M,N),或者單位矩陣ones(M,N),eye(M,N)等。
具體使用因情況而定,比如:Matlab中提供了符號傅里葉變化函數不過使用前 符號變量一定要定義或者轉換,否則Matlab不認的
具體如下:
1、簡介
編程是編寫程序的中文簡稱,就是讓計算機代為解決某個問題,對某個計算體系規定一定的運算方式,是計算體系按照該計算方式運行,并最終得到相應結果的過程。
為了使計算機能夠理解人的意圖,人類就必須將需解決的問題的思路、方法和手段通過計算機能夠理解的形式告訴計算機,使得計算機能夠根據人的指令一步一步去工作,完成某種特定的任務。這種人和計算體系之間交流的過程就是編程。
2、匯編程序
匯編程序。使用匯編語言編寫計算機程序,程序員仍然需要十分熟悉計算機系統的硬件結構,所以從程序設計本身上來看仍然是低效率的、繁瑣的。但正是由于匯編語言與計算機硬件系統關系密切,在某些特定的場合,如對時空效率要求很高的系統核心程序以及實時控制程序等,迄今為止匯編語言仍然是十分有效的程序設計工具。
3、執行原理
計算機對除機器語言以外的源程序不能直接識別、理解和執行,都必須通過某種方式轉換為計算機能夠直接執行的。這種將高級編程硬件程序設計語言編寫的源程序轉換到機器目標程序的方式有兩種:解釋方式和編譯方式。
matlab里用syms定義的符號和普通的變量有什么區別?
用sym定義的是符號類型變量,和普通的數值類型相比,主要有以下幾個方面的區別(個人理解的基礎上總結,不一定全面,也不一定正確,僅供參考):
1、完全沒有舍入誤差,可以借助于vpa實現高精度運算;
2、可用于公式推導,例如微分、積分、解方程等;
3、不屬于MATLAB基本系統,需要符號數學工具箱的支持;
4、很多功能在各版本的兼容性是需要注意的問題,尤其是2008a之前用的Maple內核,2008b之后是MuPad內核,有不少差別。
Matlab如何給符號變量賦值?
答:可以用:subs(符號變量/符號變量的矩陣)
syms z1 z2 z3 z4 z11 z22 z33 z44 IL1 IL2 Us1 Us2
A=[1,-1,0,0,0,0,0,0;
0,1,1,0,0,0,0,0;
0,0,0,0,1,-1,0,0;
0,0,0,0,0,1,1,0;
1,0,0,1,1,0,0,1;
z1,z2,-z3,-z4,0,0,0,0;
0,0,0,0,z11,z22,-z33,-z44;
0,0,0,-z4,0,0,0,z44];
B=inv(A);
C=[IL1;IL2;-IL1;-IL2;0;0;0;Us2-Us1];
D=B*C;
z1=1;z2=2;z3=3;z4=4;z11=5;z22=6;z33=7;z44=8;IL1=9;IL2=10;Us1=1;Us2=2;
E1=D(1)+D(5);
E2=D(3)++D(7);
subs(E1)%可以用subs(函數給符號變量賦值)
subs(E2)
matlab的符號變量sym,syms
sym與syms
區別1:如果定義變量x,syms x;當用sym生成多個符號變量時,MATLAB要報錯
syms函數的功能比sym函數更為強大,它可以一次創建任意多個符號變量.而且,syms函數的使用格式也很簡單,使用格式如下:
syms var1 var2 var3…
如:
syms x y z
區別2:
syms可以直接聲明符號函數d?,并且可以對函數的形式進行賦值改變,但是sym卻不可以sym d(t),只是將d(t)生成了一個整體的符號。
PI = sym(pi);
R = sym(5);
areas = PI * R ^ 2
areas = 25*pi
class(areas)
ans =sym
sym(1/3)
ans =1/3
sym(sqrt(5))
ans =5^(1/2)
sym(sqrt(5) + 1)
ans =910872158600853/281474976710656
sym(1)/sym(3) + sym(1)
ans =4/3
這種符號系統往往有特定的用途,比如Matlab符號求解微分方程等
求解步驟:
(1)先定義符號變量
(2)列出來方程組
(3)替換下式中的量
備忘一下
參考文獻:https://blog.csdn.net/winycg/article/details/52475054
總結
以上是生活随笔為你收集整理的matlab符号系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生成器脚本
- 下一篇: PYTHON语言开发公司工资条通知短信