每篇一句
你所做的事情,也行暫時看不到成功,但不要灰心,你并不是沒有成長,而是在扎根.
前情提要
本篇文章將會分多次發(fā)放(原因內容太長,導致寫的是否微信卡崩了??), 目的在于從基礎的Matlab的教程開始慢慢的深入. 如果大家看到該文章有些格式上的錯誤或內容上的錯誤, 歡迎評論指正.
Matlab基礎入門
在MATLAB中使用分號;
分號;表示結束語句
如果要
抑制和隱藏表達式的MATLAB輸出,請在表達式后添加分號
添加注釋
百分比符號%用于指示注釋行
x = 9 % assign the value 9 to x
MATLAB還可以使用塊注釋運算符 %{和%} 編寫 一段注釋 .
常用的運算符和特殊字符
| 運算符 | 使用說明 |
|---|---|
+ |
相加; 加法運算符 |
- |
相減; 減法運算符 |
* |
標量和矩陣乘法運算符 |
.* |
陣列乘法運算符 |
^ |
標量和矩陣求冪運算符 |
.^ |
陣列求冪運算符 |
\ |
左除法運算符 |
/ |
右除法運算符 |
.\ |
陣列左除法運算符 |
./ |
右除法運算符 |
: |
冒號; 生成規(guī)則間隔的元素,并表示整個行或列 |
( ) |
括號; 包含函數(shù)參數(shù)和數(shù)組索引; 覆蓋優(yōu)先級 |
[ ] |
括號; 罩住陣列元素 |
. |
小數(shù)點 |
… |
省略號; 行連續(xù)運算符 |
, |
逗號; 分隔一行中的語句和元素 |
; |
分號; 分隔列并抑制輸出顯示 |
% |
百分號;指定一個注釋并指定格式 |
_ |
引用符號和轉置運算符 |
._ |
非共軛轉置運算符 |
= |
賦值運算符 |
特殊變量和常數(shù)
| 名稱 | 含義 |
|---|---|
ans |
最近的回應/回答 |
eps |
浮點精度精度 |
pi |
數(shù)字π
|
Inf |
∞ |
i, j
|
虛構單位√-1
|
.Nan |
未定義的數(shù)值結果,非數(shù)字
|
保存工作
save命令用于在工作空間中保存所有變量,它在當前目錄中,以.mat作為擴展名的文件。
save mymat
可以隨時使用load命令重新加載文件
load mymat
變量歷史
who命令顯示使用過的所有變量名
>> who
您的變量為:
ans x y
whos命令更多地顯示變量
- 當前在內存中的變量
- 每個變量的類型
- 每個變量的內存分配
- 是否是復合的變量
執(zhí)行結果如下
>> whos
Name Size Bytes Class Attributes
ans 1x1 8 double
x 1x1 8 double
y 1x1 8 double
清除命令從存儲器中刪除所有(或指定的)變量
clear x % it will delete x, won't display anything
clear % it will delete all variables in the workspace
% peacefully and unobtrusively
長任務
-
長任務可以通過使用省略號
...擴展到另一行
initial_velocity = 0;
acceleration = 9.8;
time = 20;
final_velocity = initial_velocity ...
+ acceleration * time
等價于
initial_velocity = 0;
acceleration = 9.8;
time = 20;
final_velocity = initial_velocity + acceleration * time
格式命令
默認情況下,MATLAB顯示四位小數(shù)位數(shù)。這稱為:短格式。但是,如果要更精確,則需要使用format命令。format long命令顯示十進制后的16位數(shù)字。
>> format long
>> x = 7 + 10/3 + 5 ^ 1.2
x =
17.231981640639408
>> format long
>> x = 7 + 10/3 + 5 ^ 1.2
x =
17.2320
format bank命令將數(shù)字舍入到小數(shù)點后兩位
>> format bank
>> daily_wage = 177.45;
>> weekly_wage = daily_wage * 6
weekly_wage =
1064.70
MATLAB使用指數(shù)符號顯示大數(shù)字。
format short e命令以指數(shù)形式顯示四位小數(shù)加上指數(shù)。
>> format short e
>> 4.678 * 4.9
ans =
2.2922e+01
format long e命令允許以指數(shù)形式顯示十六位小數(shù)加上指數(shù)
>> format long e
>> x = pi
x =
3.141592653589793e+00
format rat命令給出計算結果最接近的合理表達式
>> format rat
>> 4.678 * 4.9
ans =
2063/90
創(chuàng)建向量
-
向量是數(shù)字的一維數(shù)組, MATLAB允許創(chuàng)建兩種類型的向量:
- 行向量
- 列向量
行向量是通過用方括號中的元素集合來創(chuàng)建的,使用
空格或逗號分隔元素
>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>> % 等價 a = [1 2 3 4 5 6 7 8 9]
a =
1 2 3 4 5 6 7 8 9
計算相加
>> r = [7 8 9 10 11];
>> t = [2, 3, 4, 5, 6];
>> result = r + t
result =
9 11 13 15 17
-
列向量通過用方括號中的元素集合來創(chuàng)建,使用分號
;來分隔元素
>> c = [7; 8; 9; 10; 11]
c =
7
8
9
10
11
創(chuàng)建矩陣
矩陣是數(shù)字的二維數(shù)組
在MATLAB中,通過將每行作為一系列或,分隔的元素輸入矩陣,并以;分隔一行。
創(chuàng)建一個
3x3的矩陣:
>> m = [1 2 3; 4 5 6; 7 8 9]
m =
1 2 3
4 5 6
7 8 9
管理會話的命令
| 命令 | 描述說明 |
|---|---|
clc |
清除命令窗口 |
clear |
從內存中刪除變量 |
exist |
檢查文件或變量是否存在 |
global |
聲明變量為全局變量 |
help |
搜索幫助主題 |
lookfor |
搜索幫助關鍵字的條目 |
quit |
停止MATLAB |
who |
列出當前變量 |
whos |
列出當前變量(長顯示詳細信息) |
使用系統(tǒng)命令
MATLAB提供了各種有用的命令來處理系統(tǒng), 它還為其他系統(tǒng)相關活動提供各種命令
下表顯示了一些常用的系統(tǒng)相關命令
| 命令 | 描述說明 |
|---|---|
cd |
更改當前目錄(進入指定目錄) |
date |
顯示當前日期 |
delete |
刪除文件 |
diary |
打開/關閉日記文件記錄 |
dir |
列出當前目錄下的所有文件 |
load |
從文件加載工作區(qū)變量 |
path |
顯示搜索路徑 |
pwd |
顯示當前目錄 |
save |
將工作空間變量保存在文件中 |
type |
顯示文件的內容 |
what |
列出當前目錄中的所有MATLAB文件 |
wklread |
讀取.wk1電子表格文件 |
輸入和輸出命令
MATLAB提供以下輸入和輸出相關命令
| 命令 | 描述說明 |
|---|---|
disp |
顯示數(shù)組或字符串的內容 |
fscanf |
從文件讀取格式化數(shù)據(jù) |
format |
控制屏幕顯示格式 |
fprintf |
對屏幕或文件執(zhí)行格式化的寫入 |
input |
顯示提示并等待輸入 |
; |
禁止打印顯示 |
fscanf和fprintf命令的行為類似于C語言中的scanf和printf函數(shù)。它們支持以下格式代碼
| 命令 | 描述說明 |
|---|---|
%s |
格式化為字符串 |
%d |
格式化為字符串整數(shù)值 |
%f |
格式化為浮點值 |
%e |
格式化為科學記數(shù)法的浮點值 |
%g |
格式最緊湊的形式:%f或%e。 |
\n |
在輸出字符串中插入一個換行 |
\t |
在輸出字符串中插入制表符 |
格式化
format函數(shù)具有以下用于數(shù)字顯示的形式
| 命令 | 描述說明 |
|---|---|
format short |
4位十進制數(shù)(默認) |
format long |
16位數(shù)字 |
format short e |
5位數(shù)加上指數(shù) |
format long e |
16位加上指數(shù) |
format bank |
兩位十進制數(shù)字 |
format + |
正,負或零 |
format rat |
有理近似 |
format compact |
禁止一些換行符 |
format loose |
重置為較不緊湊的顯示模式 |
向量,矩陣和數(shù)組命令
下表顯示了用于處理數(shù)組,矩陣和向量的各種命令
| 命令 | 描述說明 |
|---|---|
cat |
連接數(shù)組 |
find |
查找非零元素的索引 |
length |
計算元素數(shù)量 |
linspace |
創(chuàng)建規(guī)則間隔的向量 |
logspace |
創(chuàng)建對數(shù)間隔向量 |
max |
返回最大的元素 |
min |
返回最小的元素 |
prod |
產生的每列 |
reshape |
改變大小 |
size |
計算數(shù)組大小 |
sort |
對每列進行排序 |
sum |
對每列進行求和 |
eye |
創(chuàng)建一個單位矩陣 |
ones |
創(chuàng)建一個數(shù)組 |
zeros |
創(chuàng)建一個零的數(shù)組 |
cross |
計算矩陣交叉積 |
dot |
計算矩陣點積 |
det |
計算數(shù)組的行列式 |
inv |
計算矩陣的倒數(shù) |
pinv |
計算矩陣的偽逆 |
rank |
計算矩陣的秩 |
rref |
計算簡化行階梯形式 |
cell |
創(chuàng)建單元格數(shù)組 |
celldisp |
顯示單元格數(shù)組 |
cellplot |
顯示單元格陣列的圖形表示 |
num2cell |
將數(shù)組轉換為單元格數(shù)組 |
deal |
匹配輸入和輸出列表 |
iscell |
識別單元格數(shù)組 |
繪圖命令
MATLAB提供了許多用于繪制圖形的命令。下表顯示了一些常用的繪圖命令
| 命令 | 描述說明 |
|---|---|
axis |
設置軸限制 |
fplot |
智能繪圖功能 |
grid |
顯示網(wǎng)格線 |
plot |
生成xy坐標圖 |
print |
打印或繪圖到文件 |
title |
在文字的頂部放置文字 |
xlabel |
將文本標簽添加到x軸 |
ylabel |
將文本標簽添加到y軸 |
axes |
創(chuàng)建軸對象 |
close |
關閉當前坐標圖 |
close all |
關閉所有坐標圖 |
figure |
打開一個新的圖形窗口 |
gtext |
通過鼠標啟用標簽放置 |
hold |
凍結當前坐標圖 |
legend |
通過鼠標圖例位置 |
refresh |
重新繪制當前圖形窗口 |
set |
指定諸如軸的對象的屬性 |
subplot |
在子窗口中創(chuàng)建圖 |
text |
在圖開放置字符串 |
bar |
創(chuàng)建條形圖 |
loglog |
創(chuàng)建日志記錄圖 |
polar |
創(chuàng)建極坐標圖 |
semilogx |
創(chuàng)建半標記圖(對數(shù)橫坐標) |
semilogy |
創(chuàng)建半標記圖(對數(shù)縱坐標) |
stairs |
創(chuàng)建梯形圖 |
stem |
創(chuàng)建莖圖 |
.M文件
MATLAB允許編寫兩種程序文件
-
腳本
- 腳本文件是以
.m擴展名的程序文件 - 在這些文件中,可以編寫一系列要一起執(zhí)行的命令
- 腳本不接受輸入,不返回任何輸出
- 它們對工作空間中的數(shù)據(jù)進行操作
- 腳本文件是以
-
函數(shù)
- 函數(shù)文件也是擴展名為
.m的程序文件。函數(shù)可以接受輸入和返回輸出 - 內部變量是函數(shù)的局部變量
- 函數(shù)文件也是擴展名為
要創(chuàng)建腳本文件,需要使用文本編輯器??梢酝ㄟ^兩種方式打開MATLAB編輯器:
- 使用命令提示符
- 使用IDE
- 如果使用命令提示符,請在命令提示符下鍵入
edit并回車,這將打開編輯器 - 可以直接鍵入
edit,然后直接輸入文件名(擴展名為.m)
edit
%或者
edit newfile.m
上述命令將在默認的MATLAB目錄中創(chuàng)建該文件。如果要將所有程序文件存儲在特定文件夾中,則必須提供整個路徑
在命令行中也可以創(chuàng)建文件夾,如:創(chuàng)建一個名為worksplace的文件夾。在命令提示符下鍵入以下命令>>
mkdir worksplace % create directory progs under default directory
chdir worksplace % changing the current directory to progs
edit worksplace.m % creating an m file named prog1.m
如果使用IDE,請選擇新建 -> 腳本。 這也打開編輯器并創(chuàng)建一個名為Untitled的文件。在輸入代碼后命名并保存文件。
在編輯器中鍵入以下代碼 -
NoOfStudents = 6000;
TeachingStaff = 150;
NonTeachingStaff = 20;
Total = NoOfStudents + TeachingStaff ...
+ NonTeachingStaff;
disp(Total);
創(chuàng)建并保存文件后,可以通過兩種方式運行
- 單擊編輯器窗口上的
運行按鈕 - 只需在命令提示符下鍵入文件名(無擴展名)即可:>> worksplace
MATLAB數(shù)據(jù)類型
MATLAB提供15種基本數(shù)據(jù)類型。每種數(shù)據(jù)類型存儲矩陣或數(shù)組形式的數(shù)據(jù)。矩陣或數(shù)組的最小值是0到0,并且是可以到任何大小的矩陣或數(shù)組
下表顯示了MATLAB中最常用的數(shù)據(jù)類型
| 數(shù)據(jù)類型 | 描述 |
|---|---|
int8 |
8位有符號整數(shù) |
uint8 |
8位無符號整數(shù) |
int16 |
16位有符號整數(shù) |
uint16 |
16位無符號整數(shù) |
int32 |
32位有符號整數(shù) |
uint32 |
32位無符號整數(shù) |
int64 |
64位有符號整數(shù) |
uint64 |
64位無符號整數(shù) |
single |
單精度數(shù)值數(shù)據(jù) |
double |
雙精度數(shù)值數(shù)據(jù) |
logical |
邏輯值為1或0,分別代表true和false
|
char |
字符數(shù)據(jù)(字符串作為字符向量存儲) |
| 單元格陣列 | 索引單元陣列,每個都能夠存儲不同維數(shù)和數(shù)據(jù)類型的數(shù)組 |
| 結構體 | C型結構,每個結構具有能夠存儲不同維數(shù)和數(shù)據(jù)類型的數(shù)組的命名字段 |
| 函數(shù)處理 | 指向一個函數(shù)的指針 |
| 用戶類 | 用戶定義的類構造的對象 |
| Java類 | 從Java類構造的對象 |
示例
>> str = 'Hello World!'
>> n = 2345
>> d = double(n)
>> un = uint32(789.50)
>> rn = 5678.92347
>> c = int32(rn)
str =
'Hello World!'
n =
2345
d =
2345
un =
uint32
790
rn =
5.6789e+03
c =
int32
5679
數(shù)據(jù)類型轉換
MATLAB提供了各種用于將一種數(shù)據(jù)類型轉換為另一種數(shù)據(jù)類型的函數(shù)
| 函數(shù) | 描述說明 |
|---|---|
char |
轉換為字符數(shù)組(字符串) |
int2str |
將整數(shù)數(shù)據(jù)轉換為字符串 |
mat2str |
將矩陣轉換為字符串 |
num2str |
將數(shù)字轉換為字符串 |
str2double |
將字符串轉換為雙精度值 |
str2num |
將字符串轉換為數(shù)字 |
native2unicode |
將數(shù)字字節(jié)轉換為Unicode字符 |
unicode2native |
將Unicode字符轉換為數(shù)字字節(jié) |
base2dec |
將基數(shù)N字符串轉換為十進制數(shù) |
bin2dec |
將二進制數(shù)字串轉換為十進制數(shù) |
dec2base |
將十進制轉換為字符串中的N數(shù)字 |
dec2bin |
將十進制轉換為字符串中的二進制數(shù) |
dec2hex |
將十進制轉換為十六進制數(shù)字 |
hex2dec |
將十六進制數(shù)字字符串轉換為十進制數(shù) |
hex2num |
將十六進制數(shù)字字符串轉換為雙精度數(shù)字 |
num2hex |
將單數(shù)轉換為IEEE十六進制字符串 |
cell2mat |
將單元格數(shù)組轉換為數(shù)組 |
cell2struct |
將單元格數(shù)組轉換為結構數(shù)組 |
cellstr |
從字符數(shù)組創(chuàng)建字符串數(shù)組 |
mat2cell |
將數(shù)組轉換為具有潛在不同大小的單元格的單元陣列 |
num2cell |
將數(shù)組轉換為具有一致大小的單元格的單元陣列 |
struct2cell |
將結構轉換為單元格數(shù)組 |
數(shù)據(jù)類型確定
MATLAB提供了用于識別變量數(shù)據(jù)類型的各種函數(shù)。
| 函數(shù) | 描述說明 |
|---|---|
is |
檢測狀態(tài) |
isa |
確定輸入是否是指定類的對象 |
iscell |
確定輸入是單元格數(shù)組 |
iscellstr |
確定輸入是字符串的單元格數(shù)組 |
ischar |
確定項目是否是字符數(shù)組 |
isfield |
確定輸入是否是結構數(shù)組字段 |
isfloat |
確定輸入是否為浮點數(shù)組 |
ishghandle |
確定是否用于處理圖形對象句柄 |
isinteger |
確定輸入是否為整數(shù)數(shù)組 |
isjava |
確定輸入是否為Java對象 |
islogical |
確定輸入是否為邏輯數(shù)組 |
isnumeric |
確定輸入是否是數(shù)字數(shù)組 |
isobject |
確定輸入是否為MATLAB對象 |
isreal |
檢查輸入是否為實數(shù)數(shù)組 |
isscalar |
確定輸入是否為標量 |
isstr |
確定輸入是否是字符數(shù)組 |
isstruct |
確定輸入是否是結構數(shù)組 |
isvector |
確定輸入是否為向量 |
class |
確定對象的類 |
validateattributes |
檢查數(shù)組的有效性 |
whos |
在工作區(qū)中列出變量,其大小和類型 |
示例
使用以下代碼創(chuàng)建腳本文件
x = 3
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
x = 23.54
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
x = [1 2 3]
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
x = 'Hello'
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
result is
x = 3
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x = 23.5400
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x =
1 2 3
ans = 0
ans = 1
ans = 1
ans = 0
x = 'Hello'
ans = 0
ans = 0
ans = 1
ans = 0
ans = 0
MATLAB中的運算符
既可用于標量數(shù)據(jù)也可用于非標量數(shù)據(jù)
MATLAB允許以下類型的基本操作
- 算術運算符
- 關系運算符
- 邏輯運算符
- 按位運算符
- 集合運算符
算術運算符
MATLAB允許兩種不同類型的算術運算
- 矩陣算術運算
- 數(shù)組算術運算
- 矩陣算術運算與線性代數(shù)中定義的相同
- 在一維和多維數(shù)組中,逐個元素執(zhí)行數(shù)組運算
- 矩陣運算符和數(shù)組運算符由句點符號
.區(qū)分
然而,由于對于矩陣和陣列的加減運算是相同的,因此對于這兩種情況,運算符相同
| 運算符 | 描述說明 |
|---|---|
+ |
加法或一元加法運算。A + B表示相加存儲在變量A和B中的值。A和B必須具有相同的大小,除非是標量。 標量可以添加到任何大小的矩陣。 |
- |
減法或一元減法運算。 A-B表示從A中減去B的值。A和B必須具有相同的大小,除非是標量??梢詮娜魏未笮〉木仃囍袦p去標量。 |
* |
矩陣乘法。 C = A * B是矩陣A和B的線性代數(shù)乘積。更準確地說,執(zhí)行公式:A和B,A的列數(shù)必須等于B的行數(shù)。標量可以乘以任何大小的矩陣。 |
.* |
陣列乘法。 A .* B是數(shù)組A和B的逐個元素乘積。A和B必須具有相同的大小,除非它們之一是標量。 |
/ |
數(shù)組乘法。A .* B是數(shù)組A和B的逐個元素乘積。A和B必須具有相同的大小,除非它們之一是標量。 |
./ |
數(shù)組右除。A./B是具有元素A(i,j)/ B(i,j)的矩陣。 A和B必須具有相同的大小,除非它們之一是標量。 |
\ |
反斜杠或數(shù)組左除。如果A是一個方陣,A \ B與inv(A)* B大致相同,除了以不同的方式計算。如果A是n×n矩陣,B是具有n個分量的列向量或具有若干這樣的列的矩陣,則X = A \ B是方程AX = B的解。如果A是不規(guī)則或幾乎單數(shù),將顯示警告消息。 |
.\ |
陣列左除。A .\ B是具有元素B(i,j)/ A(i,j)的矩陣。A和B必須具有相同的大小,除非它們之一是標量。 |
^ |
矩陣 X ^ p是X的P次冪,如果p是標量。 如果p是整數(shù),則通過重復平方來計算冪值。 如果整數(shù)為負,則X首先倒置。 對于p的其他值,計算涉及特征值和特征向量,使得如果[V,D] = eig(X),則X ^ p = V * D. ^ p / V。 |
.^ |
陣列冪值, A ^ B是B(i,j)到A(i,j)的冪矩陣。A和B必須具有相同的大小,除非它們之一是標量。 |
' |
矩陣轉置。 '是A的線性代數(shù)轉置。對于復數(shù)矩陣,這是復共軛轉置。 |
.' |
數(shù)組轉置。.'是A的數(shù)組轉置。對于復數(shù)矩陣,這不涉及共軛。 |
示例
以下示例顯示了算術運算符對標量數(shù)據(jù)的使用。使用以下代碼創(chuàng)建腳本文件
a = 10;
b = 20;
c = a + b
d = a - b
e = a * b
f = a / b
g = a \ b
x = 7;
y = 3;
z = x ^ y
運行文件時,會產生以下結果
c = 30
d = -10
e = 200
f = 0.50000
g = 2
z = 343
關系運算符
關系運算符也可以用于標量和非標量數(shù)據(jù)。數(shù)組的關系運算符在兩個數(shù)組之間執(zhí)行逐個元素的比較,并返回相同大小的邏輯數(shù)組,如果為真,則元素設置為邏輯1(true),如果為假,則元素設置為邏輯0(false)。
| 操作符 | 函數(shù) | 說明描述 |
|---|---|---|
< |
lt() |
小于 |
<= |
le() |
小于或等于 |
> |
gt() |
大于 |
>= |
ge() |
大于或等于 |
== |
eq() |
等于 |
~= |
ne() |
不等于 |
a = 100;
b = 200;
if (a >= b)
max = a
else
max = b
end
result is:
max = 200
除了上述關系運算符之外,MATLAB還提供以下用于相同目的的函數(shù)
| 函數(shù) | 描述 |
|---|---|
eq(a, b) |
測試a是否等于b
|
ge(a, b) |
測試a是否大于或等于b
|
gt(a, b) |
測試a是否大于b
|
le(a, b) |
測試a是否小于或等于b
|
lt(a, b) |
測試a是否小于b
|
ne(a, b) |
測試a是否不等于b
|
isequal |
測試數(shù)組以獲得相等性 |
isequaln |
測試數(shù)組相等,將NaN值視為相等 |
% comparing two values
a = 100;
b = 200;
if (ge(a,b))
max = a
else
max = b
end
% comparing two different values
a = 340;
b = 520;
if (le(a, b))
disp(' a is either less than or equal to b')
else
disp(' a is greater than b')
end
result is
max = 200
a is either less than or equal to b
邏輯運算符
MATLAB提供兩種類型的邏輯運算符和函數(shù):
- 逐元素 - 這些運算符對邏輯陣列的相應元素進行操作。
- 短路 - 這些運算符在標量和邏輯表達式上運行。
元素邏輯運算符在邏輯數(shù)組上運行逐個元素。符號&,|和?是邏輯數(shù)組運算符AND,OR和NOT。
短路邏輯運算符允許邏輯運算短路。符號&&和||是邏輯短路運算符AND和OR
a = 5;
b = 20;
if ( a && b )
disp('Line 1 - Condition is true');
end
if ( a || b )
disp('Line 2 - Condition is true');
end
% lets change the value of a and b
a = 0;
b = 10;
if ( a && b )
disp('Line 3 - Condition is true');
else
disp('Line 3 - Condition is not true');
end
if (~(a && b))
disp('Line 4 - Condition is true');
end
Line 1 - Condition is true
Line 2 - Condition is true
Line 3 - Condition is not true
Line 4 - Condition is true
位運算
按位運算符對位執(zhí)行,并執(zhí)行逐位運算。&,|和^的真值表如下
p |
q |
p&q |
p或q |
p^q |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
由于我使用的是markdown的語法寫的文章,而又因為表格與|沖突,因此用或代替|.
假設A = 60和B = 13
現(xiàn)在以二進制格式,它們將如下所示:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
MATLAB提供了諸如按位與和按位或以及按位非操作,移位操作等位操作的各種功能。
下表顯示了常用的按位操作:
| 方法 | 目的 |
|---|---|
bitand(a, b) |
整數(shù)a和b的位與AND操作 |
bitcmp(a) |
a的比特補碼 |
bitget(a,pos) |
在整數(shù)數(shù)組a中,獲取指定的位置pos位字節(jié) |
bitor(a, b) |
整數(shù)a和b的逐位OR操作 |
bitset(a, pos) |
設置在指定pos處的位字節(jié) |
bitshift(a, k) |
返回向左移位k字節(jié),相當于乘以2^k。 k的負值對應于向右移位或除以2^k,并舍入到最接近的整數(shù)到負無窮大。任何溢出位都被截斷 |
bitxor(a, b) |
整數(shù)a和b的逐字節(jié)位XOR操作 |
swapbytes |
交換字節(jié)排序 |
a = 60; % 60 = 0011 1100
b = 13; % 13 = 0000 1101
c = bitand(a, b) % 12 = 0000 1100
c = bitor(a, b) % 61 = 0011 1101
c = bitxor(a, b) % 49 = 0011 0001
c = bitshift(a, 2) % 240 = 1111 0000
c = bitshift(a,-2) % 15 = 0000 1111
result is
c = 12
c = 61
c = 49
c = 240
c = 15
集合操作
MATLAB為集合操作提供了各種功能,如聯(lián)合,交集和集合成員的測試等。
| 函數(shù) | 描述 |
|---|---|
intersect(A,B) |
設置兩個陣列的交集; 也就是返回A和B共同的值。返回的值按排序順序排列。 |
intersect(A,B,’rows’) |
將A的每一行和B的每一行視為單個實體,并返回A和B兩者共同的行。返回矩陣的行按排序順序排列。 |
ismember(A,B) |
返回與A相同大小的數(shù)組,其中包含1(true),其中A的元素位于B中。其他地方返回0(false)。 |
ismember(A,B,’rows’) |
將A的每行和B的每一行視為單個實體,并返回一個包含1(true)的向量,其中矩陣A的行也是B行。其他返回0(false)。 |
issorted(A) |
如果A的元素按排序順序返回邏輯1(真),否則返回邏輯0(假)。輸入A可以是一個向量,也可以是N-by-1或1-by-N的字符串數(shù)組。 如果A和sort(A)的輸出相等,則認為A被排序。 |
issorted(A, ‘rows’) |
如果二維矩陣A的行按排序順序返回邏輯1(真),否則返回邏輯0(假)。 如果A和排序(A)的輸出相等,則認為矩陣A被排序。 |
setdiff(A,B) |
設置兩個數(shù)組的差異; 返回A中不在B中的值。返回的數(shù)組中的值按排序順序排列。 |
setdiff(A,B,’rows’) |
將A的每一行和B的每一行視為單個實體,并從不在B中的A返回行。返回的矩陣的行按排序順序排列。'rows'選項不支持單元格數(shù)組。 |
setxor |
設置兩個數(shù)組的異或 |
union |
設置兩個數(shù)組的并集 |
unique |
使數(shù)組中的值唯一 |
下期將會進入令人激動的基本的決策語句, 并會介紹Matlab的矩陣包括它們的用法.
References
https://www.yiibai.com/matlab/matlab_syntax.html
本人借鑒以上網(wǎng)站,并對每一個案例進行測試以及改正; 并且希望通過這幾篇文章使查閱matlab資料不在如此麻煩,有一個統(tǒng)一的整理, 輕松學習matlab.
另外,歡迎大家關注我們的微信公眾號浮生有雨禿頭路.