MATLAB的一些使用


Matlab基本的小常識

(1)在每一行的語句后面加上分號(一定要是英文的)表示不顯示運行結果
a = 3;
a = 5

(2)多行注釋:選中要注釋的若干語句,快捷鍵Ctrl+R
% a = 3;
% a = 5

(3)取消注釋:選中要取消注釋的語句,快捷鍵Ctrl+T

clear可以清楚工作區的所有變量
clear

clc可以清除命令行窗口中的所有文本,讓屏幕變得干凈
clc

所以大家在很多代碼開頭,都會見到:
clear;clc % 分號也用於區分行。
這兩條一起使用,起到“初始化”的作用,防止之前的結果對新腳本文件(后綴名是 .m)產生干擾。

輸出和輸入函數(disp 和 input)

disp函數

matlab中disp()就是屏幕輸出函數,類似於c語言中的printf()函數
disp('大家好鴨~~~記得投幣關注我哦')
a = [1,2,3] %同一行中間用逗號分隔,也可以不用逗號,直接用空格
a = [1 2 3]
disp(a)
注意,disp函數比較特殊,這里可要分號,可不要分號哦
disp(a);
** matlab中兩個字符串的合並有兩種方法**
(1)strcat(str1,str2……,strn)
strcat('字符串1','字符串2')
(2)[str 1,str 2,……, str n]或[str1 str2 …… strn]
['字符串1' '字符串2']
['字符串1','字符串2']
一個有用的字符串函數:num2str 將數字轉換為字符串
c = 100
num2str(c)
disp(['c的取值為' num2str(c)])
disp(strcat('c的取值為', num2str(c)))

input函數

一般我們會將輸入的數、向量、矩陣、字符串等賦給一個變量,這里我們賦給A
A = input('請輸入A:');
B = input('請輸入B:')
注意觀察工作區,並體會input后面加分號和不加分號的區別

sum函數

(1)如果是向量(無論是行向量還是列向量),都是直接求和
E = [1,2,3]
sum(E)
E = [1;2;3]
sum(E)
(2)如果是矩陣,則需要根據行和列的方向作區分
clc
E = [1,2;3,4;5,6]
a=sum(x); %按列求和(得到一個行向量)
a = sum(E)
a = sum(E,1)
a=sum(x,2); %按行求和(得到一個列向量)
a = sum(E,2)
dim=1:按列求和;dim=2:按行求和;默認dim=1
a=sum(x( : ));%對整個矩陣求和
a = sum(sum(E))
a = sum(E( : ))

** 基礎:matlab中如何提取矩陣中指定位置的元素?**
:表示取所有元素
(1)取指定行和列的一個元素(輸出的是一個值)
clc;A=[1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1];
A
A(2,1)
A(3,2)
(2)取指定的某一行的全部元素(輸出的是一個行向量)
clc;A
A(2,:)
A(5,:)
(3)取指定的某一列的全部元素(輸出的是一個列向量)
clc;A
A(:,1)
A(:,3)
(4)取指定的某些行的全部元素(輸出的是一個矩陣)
clc;A
A([2,5],: ) % 只取第二行和第五行(一共2行)
A(2:5,:) % 取第二行到第五行(一共4行)
A(2:2:5,: ) % 取第二行和第四行 (從2開始,每次遞增2個單位,到5結束)
1:3:10
10 : -1 : 1
A(2:end,: ) % 取第二行到最后一行
A(2:end-1,: ) % 取第二行到倒數第二行
(5)取全部元素(按列拼接的,最終輸出的是一個列向量)
clc;A
A(: )

size函數

clc;
A = [1,2,3;4,5,6]
B = [1,2,3,4,5,6]
size(A)
size(B)
size(A)函數是用來求矩陣A的大小的,它返回一個行向量,第一個元素是矩陣的行數,第二個元素是矩陣的列數
[r,c] = size(A)
將矩陣A的行數返回到第一個變量r,將矩陣的列數返回到第二個變量c
r = size(A,1) %返回行數
c = size(A,2) %返回列數

repmat函數

% B = repmat(A,m,n):將矩陣A復制m×n塊,即把A作為B的元素,B由m×n個A平鋪而成。
A = [1,2,3;4,5,6]
B = repmat(A,2,1)
B = repmat(A,3,2)

Matlab中矩陣的運算

MATLAB在矩陣的運算中,“”號和“/”號代表矩陣之間的乘法與除法(A/B = Ainv(B))
A = [1,2;3,4]
B = [1,0;1,1]
A * B
inv(B) % 求B的逆矩陣
B * inv(B)
A * inv(B)
A / B

兩個形狀相同的矩陣對應元素之間的乘除法需要使用“.”和“./”
A = [1,2;3,4]
B = [1,0;1,1]
A .
B
A ./ B

每個元素同時和常數相乘或相除操作都可以使用
A = [1,2;3,4]
A * 2
A .* 2
A / 2
A ./ 2

每個元素同時乘方時只能用 .^
A = [1,2;3,4]
A .^ 2
A ^ 2
A * A

Matlab中求特征值和特征向量

在Matlab中,計算矩陣A的特征值和特征向量的函數是eig(A),其中最常用的兩個用法:
A = [1 2 3 ;2 2 1;2 0 3]
(1)E=eig(A):求矩陣A的全部特征值,構成向量E。
E=eig(A)
(2)[V,D]=eig(A):求矩陣A的全部特征值,構成對角陣D,並求A的特征向量構成V的列向量。(V的每一列都是D中與之相同列的特征值的特征向量)
[V,D]=eig(A)

find函數的基本用法

下面例子來自博客:https://www.cnblogs.com/anzhiwu815/p/5907033.html 博客內有更加深入的探究
find函數,它可以用來返回向量或者矩陣中不為0的元素的位置索引。
clc;X = [1 0 4 -3 0 0 0 8 6]
ind = find(X)
其有多種用法,比如返回前2個不為0的元素的位置:
ind = find(X,2)

上面針對的是向量(一維),若X是一個矩陣(二維,有行和列),索引該如何返回呢?
clc;X = [1 -3 0;0 0 8;4 0 6]
ind = find(X)
這是因為在Matlab在存儲矩陣時,是一列一列存儲的,我們可以做一下驗證:
(4)
假如你需要按照行列的信息輸出該怎么辦呢?
[r,c] = find(X)
[r,c] = find(X,1) %只找第一個非0元素

矩陣與常數的大小判斷運算

共有三種運算符:大於> ;小於< ;等於 == (一個等號表示賦值;兩個等號表示判斷)
clc
X = [1 -3 0;0 0 8;4 0 6]
X > 0
X == 4

判斷語句

Matlab的判斷語句,if所在的行不需要冒號,語句的最后一定要以end結尾 ;中間的語句要注意縮進。
a = input('請輸入考試分數:')
if a >= 85
disp('成績優秀')
elseif a >= 60
disp('成績合格')
else
disp('成績掛科')
end
****


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM