顯示中文幫助的方法
預(yù)設(shè)→常規(guī)→幫助→在mathworks.com網(wǎng)站上(需要Internet連接)→語言(簡體中文)
/:右除。a/b表示矩陣a乘以矩陣b的逆。a/b == a * inv(b)
\:左除。a\b表示矩陣a的逆乘以b。 a\b == inv(a) * b
./:右除。a./b表示矩陣a中的每個(gè)元素除以矩陣b的對(duì)應(yīng)的元素。
.\:左除。a.\b表示矩陣b中的每個(gè)元素除以矩陣a的對(duì)應(yīng)的元素。
.*點(diǎn)乘不是矩陣的乘法,是對(duì)應(yīng)元素相乘。
1 MATLAB系統(tǒng)環(huán)境與設(shè)置
- path函數(shù),可以查看搜索路徑包含的所有路徑。
- cd返回當(dāng)前目錄。
- userpath('路徑名')更改工作目錄。改好后用savepath保存路徑。
- pathtool是界面工具,設(shè)置搜索路徑。
2 MATLAB的數(shù)據(jù)操作及語法
- matlab變量區(qū)分大小寫,變量不聲明,拿來即用。
- 回車表示一句語句結(jié)束,語句末尾有分號(hào),只執(zhí)行,不輸出在顯示欄。無分號(hào)則輸出執(zhí)行結(jié)果。
- 一行不夠?qū)懙脑?,?..續(xù)行。
- who顯示在工作空間中滯留的變量名,whos給出變量更詳細(xì)的信息。
- clear命令清除工作空間中所有變量。clear a,清除變量a
- 保存數(shù)據(jù)save [文件名] [變量名] [-append] [-ascii]
- load [文件名] 載入變量文件
- format數(shù)據(jù)輸出格式控制,只影響輸出格式,不影響計(jì)算和存儲(chǔ),默認(rèn)為short格式。
- class()查看括號(hào)里變量的數(shù)據(jù)類型。
字符串
- matlab中字符串使用單引號(hào)''括起來的。
- double函數(shù)或abs函數(shù)可以獲取字符的ASCII值。
- char(63)輸出ASCII碼為63代表的字符。
- 字符串與數(shù)值間互換str2num, num2str
- eval('t=1')執(zhí)行字符串中的語句,也就是t=1語句。
eval()函數(shù)一個(gè)很好的功能就是可以自動(dòng)生成一系列變量
注意eval()中拼接字符串外面要加中括號(hào)!
for x = 1:3
eval(['a',num2str(x),' = 7'])
end
%% 相當(dāng)于執(zhí)行了下面三條語句
a1 = 7
a2 = 7
a3 = 7
- 想要讓標(biāo)題也自動(dòng)編號(hào),要注意在字符串內(nèi)還想輸出單引號(hào)'的話,需要打兩個(gè)''
for y = 1:2
eval(['title(''test',num2str(y),''');']);
end
結(jié)構(gòu)體
- 結(jié)構(gòu)體.成員名=表達(dá)式
- issturct(a)判斷a是不是結(jié)構(gòu)體
- fieldnames(a)返回a中所有成員的成員名,返回類型為字符串?dāng)?shù)組
- isfield(a, 'x1')判斷x1是不是a結(jié)構(gòu)體中的成員。
- rmfield刪除結(jié)構(gòu)體中某個(gè)成員。
- getfield獲得結(jié)構(gòu)體中的某個(gè)成員
Cell(單元或元胞)
- 用大括號(hào)創(chuàng)建
- a = {1, 'str', [11 22 33 44]}
- 取元胞內(nèi)容
- 小括號(hào)()表示取出指定位置的元胞,還是個(gè)元胞,不能用于比較,否則很難找到錯(cuò)誤。
- 花括號(hào) { } 取出的是元胞指定位置的內(nèi)容,可以拿來做比較,或者借助 isempty 判斷是否為空。eg:
if(~isempty(tagcity{i,j})) - 假設(shè)a元胞的第二個(gè)元素為[]既空元素,那么
isempty(a(2))返回0,是一個(gè)錯(cuò)誤的結(jié)果。只有寫isempty(a{2})才會(huì)返回1,得到正確的判斷。
3 MATLAB的矩陣操作
- zeros函數(shù)建立0矩陣,幺矩陣ones函數(shù)建立元素全為1的矩陣。
- 冒號(hào)表達(dá)式建立向量。
- e1:e2:e3,其中e1位初始值,e2位步長,e3為結(jié)束
- linspace(a, b, n)建立行向量,a和b分別為行向量的第一個(gè)和最后一個(gè)元素,n為總個(gè)數(shù),省略n則默認(rèn)是產(chǎn)生100個(gè)元素。
矩陣索引
- A(2, 3)獲得A矩陣的第二行第三列的元素。
- matlab矩陣存放是按列存的,先存完第一列,然后存第二列,也可以用單索引值索引。
- find(A == 8)返回A矩陣中,值為8的元素的位置。
- [m, n] = find(A == 8)返回的是行列索引的形式。
- ind = find(A == 8)返回的是單值索引的形式。
- 兩種索引值的轉(zhuǎn)換:ind = sub2ind(size(A), m, n)
- [m, n] = ind2sub(size(A), 3)
重排矩陣
- reshape(A, 9, 1)將A重新排列為9行1列的向量。轉(zhuǎn)換成列向量,也可以這樣H = A(:):這個(gè)執(zhí)行效率更高。
- 矩陣轉(zhuǎn)置用一個(gè)單引號(hào)‘
矩陣拆分
- 獲得矩陣中某行某列的部分內(nèi)容。
- M = A(1, :)獲得A矩陣中第一行的所有內(nèi)容。
- M = A(1, 1:2)獲得A矩陣的第一行中的第一列到第二列
- M = A(1, 1:end)獲得A矩陣的第一行中的第一列到最后一列
- M = A(1, 1:end - 1)獲得A矩陣的第一行中的第一列到倒數(shù)第二列
- M = A([1 2], [1 2])獲得A矩陣中的第一行第一列,第一行第二列,第二行第一列,第二行第二列。
- P = A(2:3, 1:3)和P = A([2 3], [1 2 3])效果一樣。
刪除矩陣元素
- 若M是一個(gè)一維向量,M(2) = []刪除了M的第二個(gè)元素。
- A(1, :) = []刪除A矩陣的第一行所有元素。
- 上面方法可以看成索引矩陣的賦[]值操作。
擴(kuò)展矩陣
- Q = repmat(A, 2, 2),將矩陣A看著一個(gè)大整體元素,然后復(fù)制成兩行兩列。
壓縮矩陣,去除重復(fù)元素
- S = unique(R)去除R中重復(fù)的元素,但重新排序了。unique還有其他使用形式可查看help。
- unique(R,'stable'),去重且不重新排序。
4 MATLAB矩陣處理基礎(chǔ)
特殊矩陣建立
矩陣和向量運(yùn)算
線性方程組求解
矩陣的相似化簡和分解
矩陣和向量的范數(shù)
矩陣分析
單位矩陣函數(shù)eye
隨機(jī)矩陣函數(shù)rand
從0到10間均勻分布,s = 0 + (10 - 0) * rand(10,1)
從a到b直接均勻分布的隨機(jī)數(shù)S = a + (b - a) * rand
randn產(chǎn)生均值為0,方差為1的隨機(jī)數(shù)。
產(chǎn)生均值為u,方差為s的正態(tài)分布的隨機(jī)矩陣, y = u + sqrt(s)*randn
mean獲得序列的均值
std獲得序列的方差
魔方矩陣用magic函數(shù)
Hilbert矩陣用hilb函數(shù),每個(gè)位置的元素為1/(i + j)
Toeplitz矩陣用toeplitz函數(shù)
求矩陣A行列式的值det(A)
如果行列式的值不為0 ,則可求矩陣的逆inv(A)
復(fù)數(shù)可以直接用i或j表示
b的共軛可以用conj(b)函數(shù),如果是復(fù)數(shù)向量直接用轉(zhuǎn)置b'也表示共軛
內(nèi)積運(yùn)算可用dot()函數(shù)
若a,b為兩個(gè)同緯行向量,這三個(gè)等式結(jié)果一致:
s = sum(conj(b).*a)
s = a*b'
s = dot(b, a)
線性方程組的求解,也可以用左除運(yùn)算符,效率比較高。
A = [1, 2, 3; 1, 4, 9, 1 8 27];
b = [5, -2, 6]'
x = inv(A)*b
x = A\b %%解出結(jié)果與上一行相同
用jordan(A)獲得矩陣A的約旦標(biāo)準(zhǔn)型。
[V J] = jordan(A) 得到V為A的相似變換矩陣,J就是約旦標(biāo)準(zhǔn)型。
eig函數(shù)可以獲得矩陣的特征值。
[E D] = eig(A) 得到E為特征向量,D中主對(duì)角線為特征值其余為0。
1范數(shù),2范數(shù),無窮范數(shù)以及f范數(shù),都統(tǒng)一使用norm函數(shù)。
norm(A, 1) %1范數(shù)
norm(A, 2) %2范數(shù)
norm(A, inf) %無窮范數(shù)
norm(A, 'fro') %f范數(shù)
矩陣分析:
-
MATLAB中函數(shù)的計(jì)算,比如求導(dǎo)數(shù),默認(rèn)是對(duì)每個(gè)元素求導(dǎo)。
- 求導(dǎo)函數(shù)diff(A)
- 求二階導(dǎo)數(shù)diff(A, 2)
-
建立符號(hào)x,類似于代數(shù)。
- syms x
矩陣函數(shù),計(jì)算矩陣函數(shù)eA,sinA,cosA,使用funm函數(shù),使用方法如下:
S = funm(A, @fun);
A = [0 1; 0 -2];
expA = funm(A, @exp)
expA = expm(A) %結(jié)果同上
sinA = funm(A, @sin)
cosA = funm(A, @cos)
5 MATLAB程序控制結(jié)構(gòu)
- M文件分類:命令文件(Script File)、函數(shù)文件(Function File)。
- 命令文件沒有輸入,沒有返回;命令文件可以對(duì)工作空間的變量操作,結(jié)果返回工作空間,而函數(shù)文件中的變量為局部變量,函數(shù)執(zhí)行完畢,變量被清除。
順序結(jié)構(gòu)
- 用于順序結(jié)構(gòu)中的輸入和輸出(命令交互):
- 數(shù)據(jù)輸入(input函數(shù))
- 數(shù)據(jù)顯示(disp函數(shù))
- 程序暫停(pause函數(shù)),設(shè)計(jì)界面動(dòng)畫時(shí)候經(jīng)常使用。
分支(選擇)結(jié)構(gòu)
- y = cos(x(find(x < 10)));這樣寫沒有用分支結(jié)構(gòu),直接用了索引找到所有x向量中x值小于10的下標(biāo),然后對(duì)這些數(shù)據(jù)進(jìn)行求余弦操作。
x = input('x');
if x < 10
y = log(x);
else
y = cos(x);
end
%多分支if語句
c = input('input a character', 's');
if c >= 'A' & c <= 'Z'
disp(char(abs(c) + abs('a') - abs('A')));
elseif c >= 'a' & c <= 'z'
disp(char(abs(c) - abs('a') + abs('A')));
elseif c >= '0' & c <= '9'
disp(c);
end
%switch分支,在1000不同價(jià)格范圍有不同的折扣rate
price = input('input price');
switch fix(price/100)
case {0, 1} %可以用單元結(jié)構(gòu)表示當(dāng)判斷條件為0或1的時(shí)候
rate = 0;
case {2, 3, 4}
rate = .03;
case {5, 6, 7, 8, 9}
rate = .05;
otherwise
rate = .1;
end
- try是試探性的分支語句,也就是如果這條語句執(zhí)行有錯(cuò)誤,則不執(zhí)行,或者執(zhí)行其他的語句,提高了程序的容錯(cuò)性能。如果下面語句組1有錯(cuò)誤,則執(zhí)行語句組2。
try
語句組1
catch %可沒有
語句組2 %可沒有
end
- 比如需要?jiǎng)h除某個(gè)變量,但是不知道這個(gè)變量有沒有,如果直接使用clear或者delete命令,那么這個(gè)變量有的話可以,如果這個(gè)變量沒有呢,那么就出錯(cuò)了,程序就終止了,在一個(gè)大程序中,這樣是不利的。
循環(huán)結(jié)構(gòu)
- for循環(huán)的常用語法如下,當(dāng)然也可以for 循環(huán)變量 = 矩陣,這樣每次循環(huán),矩陣的每一列就會(huì)進(jìn)入循環(huán)體一次。
for 循環(huán)變量 = 表達(dá)式1:表達(dá)式2:表達(dá)式3
循環(huán)體
end
- 注意循環(huán)變量自動(dòng)增加,在循環(huán)體內(nèi)不要對(duì)循環(huán)變量進(jìn)行賦值操作,否則結(jié)果不可預(yù)料。
- matlab中的for循環(huán)中最好不使用i,j做循環(huán)變量。
% for循環(huán)
A = 1:100;
sumA = 0;
for k = 1:100
sumA = sumA + A(k);
end
- while循環(huán)
while 條件
循環(huán)體
end
%while循環(huán),下面實(shí)現(xiàn)輸入字符再輸入回車?yán)^續(xù)執(zhí)行,直接輸入回車退出循環(huán)
while 1
c = input('input a character', 's')
if isempty(abs(c)) %isempty函數(shù)判斷是否為空,輸入回車也是空
break;
end
end
- matlab中要避免使用兩重以上循環(huán),否則效率很低。
- 怎樣避免使用循環(huán)和提高循環(huán)效率?
- ★有些可以通過matlab的矢量化語言,通過矩陣或者向量操作完成。
- ★有些可以通過matlab提供的一些特殊工具箱函數(shù)完成。
- ★預(yù)分配的使用,會(huì)大大增加循環(huán)效率。
6 MATLAB的編輯器和程序調(diào)試
函數(shù)文件
function [輸出形參] = 函數(shù)名([輸入形參])
[注釋說明] %用help或lookfor查看函數(shù)幫助即顯示這部分內(nèi)容
函數(shù)體
- 通常函數(shù)文件名和函數(shù)名一致,如果不一致,忽略函數(shù)名,調(diào)用時(shí)使用函數(shù)文件名。
- 選中多行內(nèi)容可以用Ctrl+R注釋,用Ctrl+T取消注釋。
函數(shù)參數(shù)可調(diào)標(biāo)識(shí)變量
nargin
nargout
varargin
varargout
- 可以完成傳遞參數(shù)的可調(diào)功能,類似于其它高級(jí)語言中的函數(shù)重載和多態(tài)。
- 前兩者為輸入輸出參數(shù)個(gè)數(shù),后兩個(gè)可以代表未知的輸入輸出變量。
function re = add_multi(a, b, c, d)
%輸入?yún)?shù)可調(diào)的函數(shù)范例
if nargin == 4
re = a + b + c + d;
elseif nargin == 3
re = a + b + c;
elseif nargin == 2
re = a + b;
else
error('wrong');
end
function [a, b] = add_mu(c, d, e, f)
%輸出參數(shù)可調(diào)范例
if nargout == 2
a = c + d + e + f;
b = c * d * e * f;
else
a = c + d + e + f;
end
function re = add_var(a, b, varargin)
%輸入?yún)?shù)個(gè)數(shù)未知范例
if nargin == 2
re = a + b;
elseif nargin == 3
c = varargin{1}; %用元胞數(shù)組來操作
re = a + b + c;
else
re = a + b;
for k = 1:(nargin-2)
re = re + varargin{k};
end
end
- error(nargchk(2, 4, nargin)),檢測參數(shù)輸入范圍最小兩個(gè),最大4個(gè),如果不是這個(gè)范圍則輸出錯(cuò)誤信息。
- 關(guān)于varargout的用法可以參考工具箱函數(shù),輸入edit pburg可以看。
全局變量
- 使用global聲明,可以提供不同的M文件訪問同一個(gè)變量。在每個(gè)文件中都要聲明。
調(diào)試
- >>執(zhí)行狀態(tài),K>>調(diào)試狀態(tài)
7 MATLAB繪圖功能(1) 二維高層繪圖操作
基本函數(shù)plot
-
二維繪圖的輔助操作:
- 標(biāo)注(圖形名稱,坐標(biāo)軸名稱,曲線標(biāo)注,圖例)
- 坐標(biāo)軸控制
- 圖形保持(同一坐標(biāo)軸繪制多個(gè)圖形)
- 窗口分割(同一個(gè)窗口有多個(gè)坐標(biāo)軸)
-
plot(x, y)基本要求:x和y為相同長度的向量,但也有特殊用法:
- x為向量,y為矩陣,其中一維與x長度相同,則繪制多條不同顏色的曲線(顏色確定涉及到底層繪圖操作)
- x和y為同維矩陣,以對(duì)應(yīng)列繪制不同色彩的曲線
- 若plot只有一個(gè)參數(shù),若x為實(shí)數(shù)向量,則繪制折線圖;若為復(fù)數(shù)向量,則以實(shí)部和虛部為橫縱坐標(biāo)繪圖
- 多個(gè)輸入?yún)?shù)
- 曲線選項(xiàng)
% 基本繪圖操作,繪制一個(gè)正弦函數(shù)
x = 0:0.01:2*pi;
y = sin(x);
plot(x, y);
% y是矩陣的情況
y1 = sin(x);
y2 = cos(x);
z = [y1; y2];
plot(x, z);
%兩個(gè)參數(shù)都是矩陣
x1 = 0:0.01:2*pi;
x2 = -pi:0.01:pi;
x = [x1; x2];
y1 = cos(x1);
y2 = sin(x2);
y = [y1; y2];
plot(x, y);

% 上面是使用了每列進(jìn)行繪圖,這樣繪制了很多條曲線。
% 如果想要使用每一行來繪圖,
% 那么需要將x和y進(jìn)行轉(zhuǎn)置,
% 就繪制了一條從0到2π的余弦,
% 一條從-π到π的正弦
x1 = 0:0.01:2*pi;
x2 = -pi:0.01:pi;
x = [x1; x2]';
y1 = cos(x1);
y2 = sin(x2);
y = [y1; y2]';
plot(x, y);

% plot只有一個(gè)參數(shù)
x = linspace(0, 2*pi, 200);
y = sin(x);
plot(y); %繪出正弦
y2 = cos(x);
y3 = y + i*y2;
plot(y3); %繪出一個(gè)橢圓,坐標(biāo)軸控制axis equal命令可變成一個(gè)圓
% plot只有多個(gè)參數(shù)
x1 = linspace(0, 2*pi, 200);
x2 = linspace(0, 2*pi, 100);
y1 = cos(x1);
y2 = sin(x2);
plot(x1, y1, x2, y2); %不同長度的曲線同時(shí)繪制
% plot含有的曲線選項(xiàng)
plot(x, y, 'k'); %r紅色,k黑色,g綠色,y黃色,m品紅,b藍(lán)色
plot(x, y, '*'); %用'*'來繪圖,是離散的圖。同理.是點(diǎn),'p'是五角星,'<' ,'>'是三角星,'--'虛線,'-.'是線和點(diǎn),':'很小的虛線
plot(x, y, 'r*'); %顏色和線型的結(jié)合
%圖形標(biāo)注
plot(x , y);
xlabel('x');
ylabel('y');
title('正弦');
text(2, 0.3, 'y = sin(x)'); %在某個(gè)位置顯示字符串
legend('cos', 'sin'); %繪制圖例
- matlab中可以用LaTex字符,字符串'x_2'顯示出來是x2
坐標(biāo)軸控制
- axis equal
- axis square
- axis auto
- axis off
- axis on
- axis([xmin xmax ymin ymax])
- xlim([xmin xmax])
- ylim([ymin ymax])
圖形保持
- hold on
- 關(guān)閉圖形保持hold off
窗口分割
%窗口分割
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
y3 = tan(x);
y4 = exp(x);
subplot(2, 2, 1) %將窗口分成兩行兩列4格,繪制第一格
plot(x, y1);
subplot(222) %繪制第二格
plot(x, y2);
subplot(223)
plot(x, y3);
subplot(224)
plot(x, y4);

8 MATLAB繪圖功能(2) 二維底層繪圖修飾
- matlab把構(gòu)成圖形的各個(gè)基本要素稱為圖形對(duì)象,產(chǎn)生每一個(gè)圖形對(duì)象時(shí),matlab會(huì)自動(dòng)分配一個(gè)唯一的值用于表示這個(gè)對(duì)象,稱為句柄。
- 對(duì)象間基本關(guān)系:計(jì)算機(jī)屏幕 → 圖形窗口 → (用戶菜單,用戶控件,坐標(biāo)軸)
- 坐標(biāo)軸 → (曲線,曲面,文字,圖像,光源,區(qū)域,方框)
- line函數(shù)普通用法和plot相同 h = line([-pi:0.01:pi], sin([-pi:0.01:pi]));
hl = line('XData', [-pi:0.01:pi], 'YData', sin([-pi:0.01:pi]),...
'LineWidth', 1, 'LineStyle', ':', 'Color', 'r');
hl = line('XData', [-pi:0.01:pi], 'YData', sin([-pi:0.01:pi]),...
'LineWidth', 1, 'LineStyle', ':', 'Color', 'r');
set(hl, 'LineWidth', 2, 'Marker', 'p', 'MarkerSize', 15);
- text對(duì)象返回一個(gè)句柄后。也可以用set來更改設(shè)置。修飾屬性: Color,String, FontSize,Rotation。
底層坐標(biāo)軸控制
- axes對(duì)象和axes函數(shù)
- 修飾:
- Box屬性,
- GridLineStyle屬性,網(wǎng)格的線型,默認(rèn)是虛線
- Position屬性
- Units屬性,當(dāng)該屬性為normalized時(shí),子窗口隨父窗口變化而變化。
- XLabel、YLabel和ZLabel屬性
- Xlim、Ylim和Zlim屬性
ha = axes;
get(ha) %獲得坐標(biāo)軸屬性
hf = figure;
ha = axes('Parent', hf, 'Unit', 'normalized', 'Position', [.1 .1 .6 .5]);
9 MATLAB Notebook使用簡介
- 方便matlab代碼直接移到word,方便寫文檔。
- 在Notebook中,需要運(yùn)行的代碼部分要設(shè)置為“輸入單元”,使用綠色加粗Courier New字體顯示;
- 定義輸入單元,可以使用Notebook菜單,或者組合鍵“Alt+D”;
- 定義輸入單元之后,選擇Notebook菜單中的“Evaluate Cell”或者組合鍵“Ctrl+Enter”執(zhí)行單元,輸出直接在相應(yīng)輸入單元之后顯示,使用藍(lán)色Courier New字體顯示。
- 自動(dòng)初始化單元可以在打開Notebook時(shí)自動(dòng)執(zhí)行,這樣可以快速恢復(fù)所需要的工作空間。
- 定義方式:選擇需要定義的單元,選擇Notebook菜單中的“Define AutoInit Cell”。
- 定義為自動(dòng)初始化的單元使用藍(lán)色加粗Courier New字體顯示
10 MATLAB符號(hào)運(yùn)算
- 符號(hào)計(jì)算基礎(chǔ)
- 符號(hào)常量和符號(hào)變量
- 符號(hào)四則運(yùn)算
- 符號(hào)表達(dá)式的化簡
- 符號(hào)矩陣運(yùn)算
- 符號(hào)函數(shù)
- 極限
- 微分
- 積分
- 符號(hào)級(jí)數(shù)
- 符號(hào)方程求解
- 代數(shù)方程
- 微分方程
a = sym('a'); %符號(hào)變量
syms a; %同上
c = sym('3'); %符號(hào)常量
f1 = '3 * x + 4';
class(f1) %得到類型為char
syms x
f2 = 3 * x + 4;
class(f2) %得到類型為sym
f3 = sym('3 * y + 4');
class(f3) %得到類型為sym
f4 = f1 + f2; %得到f4 = 6*x + 8
class(f4) %得到類型為sym
- 符號(hào)四則運(yùn)算有 + - * / ^
符號(hào)表達(dá)式化簡
- simplify
- simple用了很多規(guī)則來化簡,都列了出來,包含simplify
符號(hào)表達(dá)式與數(shù)值的轉(zhuǎn)化用
- sym 數(shù)值轉(zhuǎn)化為符號(hào)
- eval 將符號(hào)變量轉(zhuǎn)化為數(shù)值變量
符號(hào)表達(dá)式的分解展開合并
- factor因式分解
- expand因式展開
- collect合并同類項(xiàng)
syms a b x y;
f1 = a^3 - b^3;
factor(f1) %得到[ a - b, a^2 + a*b + b^2]
f2 = (3*x^2 + 8*y^2)*(-x^2 + 3*y);
expand(f2) %得到- 3*x^4 - 8*x^2*y^2 + 9*x^2*y + 24*y^3
f3 = 3*x^2 + 4*x^2 + 5*x^2*y;
collect(f3) %得到(5*y + 7)*x^2
符號(hào)矩陣
- 構(gòu)建方式與數(shù)值矩陣一致
- 轉(zhuǎn)置和行列式:transpose determ
- 其它使用在數(shù)值矩陣中的函數(shù)也可以直接用于符號(hào)矩陣
- 注意:
- 用transpose(A)的轉(zhuǎn)置相當(dāng)于AT
- 直接使用單引號(hào)‘的轉(zhuǎn)置相當(dāng)于A的共軛轉(zhuǎn)置,即AH
符號(hào)函數(shù)
- 用符號(hào)函數(shù)計(jì)算得到的結(jié)果類型是sym,如果還需要數(shù)值用eval轉(zhuǎn)換一下!
syms x
f1 = x^3 - 9;
subs(f1, 3) %用3來代替原來f1中符號(hào)的位置來計(jì)算
y = (sin(x + a) - sin(x - a)) / x;
limit(y, 0) %求極限,當(dāng)x趨于零時(shí),y的值
y2 = sqrt(1 + exp(x));
diff(y2) %求解差分
diff(y2, 2) %求解2階導(dǎo)數(shù)
diff(y2, 3) %求解3階導(dǎo)數(shù)
y3 = (3 - x^2)^3;
int(y3) %求解不定積分
y4 = abs(1 - x);
int(y4, 1, 2) %求解定積分
符號(hào)級(jí)數(shù)
- 符號(hào)級(jí)數(shù)求和symsum,泰勒級(jí)數(shù)taylor
syms n
f = 1/n^2;
s1 = symsum(f, n, 1, inf) %4個(gè)參數(shù)意義依次是:第一是通項(xiàng),第二個(gè)規(guī)定哪個(gè)參數(shù)作為求和變量,第三第四參數(shù)表示在求和范圍
% 泰勒展開
syms x
y = (1 + x + x^2)/(1 - x + x^2);
taylor(y,'order',6)
符號(hào)方程求解
- 符號(hào)代數(shù)方程和方程組solve
- 符號(hào)常微分方程dsolve,其中D3y表示與的三階導(dǎo)數(shù),Dy表示y的一階導(dǎo)數(shù)。
% 方程組,可用=號(hào)形式,也可移項(xiàng)到等號(hào)同意一邊,表示等于0
[x y] = solve('1/x^3 + 1/y^3 = 28', '1/x + 1/y -4', 'x, y')
% 微分方程
dsolve('Dy - (x^2 + y^2)/x^2/2', 'x')
參考《MATLAB基礎(chǔ)視頻》 作者:lskyp