Matlab基礎(chǔ)第一篇

每天好心情??

每篇一句

你所做的事情,也行暫時看不到成功,但不要灰心,你并不是沒有成長,而是在扎根.

前情提要

本篇文章將會分多次發(fā)放(原因內(nèi)容太長,導(dǎo)致寫的是否微信卡崩了??), 目的在于從基礎(chǔ)的Matlab的教程開始慢慢的深入. 如果大家看到該文章有些格式上的錯誤或內(nèi)容上的錯誤, 歡迎評論指正.

Matlab基礎(chǔ)入門

在MATLAB中使用分號;

分號;表示結(jié)束語句

如果要抑制隱藏表達(dá)式的MATLAB輸出,請在表達(dá)式后添加分號

添加注釋

百分比符號%用于指示注釋行

x = 9    % assign the value 9 to x

MATLAB還可以使用塊注釋運算符 %{%} 編寫 一段注釋 .

常用的運算符和特殊字符

運算符 使用說明
+ 相加; 加法運算符
- 相減; 減法運算符
* 標(biāo)量和矩陣乘法運算符
.* 陣列乘法運算符
^ 標(biāo)量和矩陣求冪運算符
.^ 陣列求冪運算符
\ 左除法運算符
/ 右除法運算符
.\ 陣列左除法運算符
./ 右除法運算符
: 冒號; 生成規(guī)則間隔的元素斜脂,并表示整個行或列
( ) 括號; 包含函數(shù)參數(shù)和數(shù)組索引; 覆蓋優(yōu)先級
[ ] 括號; 罩住陣列元素
. 小數(shù)點
省略號; 行連續(xù)運算符
, 逗號; 分隔一行中的語句和元素
; 分號; 分隔列并抑制輸出顯示
% 百分號;指定一個注釋并指定格式
_ 引用符號和轉(zhuǎn)置運算符
._ 非共軛轉(zhuǎn)置運算符
= 賦值運算符

特殊變量和常數(shù)

名稱 含義
ans 最近的回應(yīng)/回答
eps 浮點精度精度
pi 數(shù)字π
Inf
i, j 虛構(gòu)單位√-1
.Nan 未定義的數(shù)值結(jié)果,非數(shù)字

保存工作

save命令用于在工作空間中保存所有變量,它在當(dāng)前目錄中洪橘,以.mat作為擴(kuò)展名的文件。

save mymat

可以隨時使用load命令重新加載文件

load mymat

變量歷史

who命令顯示使用過的所有變量名

>> who

您的變量為:
ans  x    y

whos命令更多地顯示變量

  • 當(dāng)前在內(nèi)存中的變量
  • 每個變量的類型
  • 每個變量的內(nèi)存分配
  • 是否是復(fù)合的變量

執(zhí)行結(jié)果如下

>> 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

長任務(wù)

  • 長任務(wù)可以通過使用省略號 ... 擴(kuò)展到另一行
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

格式命令

默認(rèn)情況下棵帽,MATLAB顯示四位小數(shù)位數(shù)熄求。這稱為:短格式。但是逗概,如果要更精確弟晚,則需要使用format命令。format long命令顯示十進(jìn)制后的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命令給出計算結(jié)果最接近的合理表達(dá)式

>> 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 從內(nèi)存中刪除變量
exist 檢查文件或變量是否存在
global 聲明變量為全局變量
help 搜索幫助主題
lookfor 搜索幫助關(guān)鍵字的條目
quit 停止MATLAB
who 列出當(dāng)前變量
whos 列出當(dāng)前變量(長顯示詳細(xì)信息)

使用系統(tǒng)命令

MATLAB提供了各種有用的命令來處理系統(tǒng), 它還為其他系統(tǒng)相關(guān)活動提供各種命令

下表顯示了一些常用的系統(tǒng)相關(guān)命令

命令 描述說明
cd 更改當(dāng)前目錄(進(jìn)入指定目錄)
date 顯示當(dāng)前日期
delete 刪除文件
diary 打開/關(guān)閉日記文件記錄
dir 列出當(dāng)前目錄下的所有文件
load 從文件加載工作區(qū)變量
path 顯示搜索路徑
pwd 顯示當(dāng)前目錄
save 將工作空間變量保存在文件中
type 顯示文件的內(nèi)容
what 列出當(dāng)前目錄中的所有MATLAB文件
wklread 讀取.wk1電子表格文件

輸入和輸出命令

MATLAB提供以下輸入和輸出相關(guān)命令

命令 描述說明
disp 顯示數(shù)組或字符串的內(nèi)容
fscanf 從文件讀取格式化數(shù)據(jù)
format 控制屏幕顯示格式
fprintf 對屏幕或文件執(zhí)行格式化的寫入
input 顯示提示并等待輸入
; 禁止打印顯示

fscanffprintf命令的行為類似于C語言中的scanfprintf函數(shù)。它們支持以下格式代碼

命令 描述說明
%s 格式化為字符串
%d 格式化為字符串整數(shù)值
%f 格式化為浮點值
%e 格式化為科學(xué)記數(shù)法的浮點值
%g 格式最緊湊的形式:%f%e蹋偏。
\n 在輸出字符串中插入一個換行
\t 在輸出字符串中插入制表符

格式化format函數(shù)具有以下用于數(shù)字顯示的形式

命令 描述說明
format short 4位十進(jìn)制數(shù)(默認(rèn))
format long 16位數(shù)字
format short e 5位數(shù)加上指數(shù)
format long e 16位加上指數(shù)
format bank 兩位十進(jìn)制數(shù)字
format + 正,負(fù)或零
format rat 有理近似
format compact 禁止一些換行符
format loose 重置為較不緊湊的顯示模式

向量至壤,矩陣和數(shù)組命令

下表顯示了用于處理數(shù)組威始,矩陣和向量的各種命令

命令 描述說明
cat 連接數(shù)組
find 查找非零元素的索引
length 計算元素數(shù)量
linspace 創(chuàng)建規(guī)則間隔的向量
logspace 創(chuàng)建對數(shù)間隔向量
max 返回最大的元素
min 返回最小的元素
prod 產(chǎn)生的每列
reshape 改變大小
size 計算數(shù)組大小
sort 對每列進(jìn)行排序
sum 對每列進(jìn)行求和
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ù)組轉(zhuǎn)換為單元格數(shù)組
deal 匹配輸入和輸出列表
iscell 識別單元格數(shù)組

繪圖命令

MATLAB提供了許多用于繪制圖形的命令。下表顯示了一些常用的繪圖命令

命令 描述說明
axis 設(shè)置軸限制
fplot 智能繪圖功能
grid 顯示網(wǎng)格線
plot 生成xy坐標(biāo)圖
print 打印或繪圖到文件
title 在文字的頂部放置文字
xlabel 將文本標(biāo)簽添加到x
ylabel 將文本標(biāo)簽添加到y
axes 創(chuàng)建軸對象
close 關(guān)閉當(dāng)前坐標(biāo)圖
close all 關(guān)閉所有坐標(biāo)圖
figure 打開一個新的圖形窗口
gtext 通過鼠標(biāo)啟用標(biāo)簽放置
hold 凍結(jié)當(dāng)前坐標(biāo)圖
legend 通過鼠標(biāo)圖例位置
refresh 重新繪制當(dāng)前圖形窗口
set 指定諸如軸的對象的屬性
subplot 在子窗口中創(chuàng)建圖
text 在圖開放置字符串
bar 創(chuàng)建條形圖
loglog 創(chuàng)建日志記錄圖
polar 創(chuàng)建極坐標(biāo)圖
semilogx 創(chuàng)建半標(biāo)記圖(對數(shù)橫坐標(biāo))
semilogy 創(chuàng)建半標(biāo)記圖(對數(shù)縱坐標(biāo))
stairs 創(chuàng)建梯形圖
stem 創(chuàng)建莖圖

.M文件

MATLAB允許編寫兩種程序文件

  • 腳本
    • 腳本文件是以.m擴(kuò)展名的程序文件
    • 在這些文件中脓斩,可以編寫一系列要一起執(zhí)行的命令
    • 腳本不接受輸入畴栖,不返回任何輸出
    • 它們對工作空間中的數(shù)據(jù)進(jìn)行操作
  • 函數(shù)
    • 函數(shù)文件也是擴(kuò)展名為.m的程序文件随静。函數(shù)可以接受輸入和返回輸出
    • 內(nèi)部變量是函數(shù)的局部變量

要創(chuàng)建腳本文件燎猛,需要使用文本編輯器重绷≌炎浚可以通過兩種方式打開MATLAB編輯器:

  • 使用命令提示符
  • 使用IDE
  1. 如果使用命令提示符候醒,請在命令提示符下鍵入edit并回車火焰,這將打開編輯器
  2. 可以直接鍵入edit昌简,然后直接輸入文件名(擴(kuò)展名為.m)
edit 
%或者
edit newfile.m

上述命令將在默認(rèn)的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)建并保存文件后户辞,可以通過兩種方式運行

  • 單擊編輯器窗口上的運行按鈕
  • 只需在命令提示符下鍵入文件名(無擴(kuò)展名)即可:>> worksplace

MATLAB數(shù)據(jù)類型

MATLAB提供15基本數(shù)據(jù)類型刃榨。每種數(shù)據(jù)類型存儲矩陣數(shù)組形式的數(shù)據(jù)枢希。矩陣或數(shù)組的最小值是00苞轿,并且是可以到任何大小的矩陣或數(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 邏輯值為10,分別代表truefalse
char 字符數(shù)據(jù)(字符串作為字符向量存儲)
單元格陣列 索引單元陣列,每個都能夠存儲不同維數(shù)和數(shù)據(jù)類型的數(shù)組
結(jié)構(gòu)體 C型結(jié)構(gòu)坯门,每個結(jié)構(gòu)具有能夠存儲不同維數(shù)和數(shù)據(jù)類型的數(shù)組的命名字段
函數(shù)處理 指向一個函數(shù)的指針
用戶類 用戶定義的類構(gòu)造的對象
Java類 從Java類構(gòu)造的對象

示例

>> 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ù)類型轉(zhuǎn)換

MATLAB提供了各種用于將一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型的函數(shù)

函數(shù) 描述說明
char 轉(zhuǎn)換為字符數(shù)組(字符串)
int2str 將整數(shù)數(shù)據(jù)轉(zhuǎn)換為字符串
mat2str 將矩陣轉(zhuǎn)換為字符串
num2str 將數(shù)字轉(zhuǎn)換為字符串
str2double 將字符串轉(zhuǎn)換為雙精度值
str2num 將字符串轉(zhuǎn)換為數(shù)字
native2unicode 將數(shù)字字節(jié)轉(zhuǎn)換為Unicode字符
unicode2native 將Unicode字符轉(zhuǎn)換為數(shù)字字節(jié)
base2dec 將基數(shù)N字符串轉(zhuǎn)換為十進(jìn)制數(shù)
bin2dec 將二進(jìn)制數(shù)字串轉(zhuǎn)換為十進(jìn)制數(shù)
dec2base 將十進(jìn)制轉(zhuǎn)換為字符串中的N數(shù)字
dec2bin 將十進(jìn)制轉(zhuǎn)換為字符串中的二進(jìn)制數(shù)
dec2hex 將十進(jìn)制轉(zhuǎn)換為十六進(jìn)制數(shù)字
hex2dec 將十六進(jìn)制數(shù)字字符串轉(zhuǎn)換為十進(jìn)制數(shù)
hex2num 將十六進(jìn)制數(shù)字字符串轉(zhuǎn)換為雙精度數(shù)字
num2hex 將單數(shù)轉(zhuǎn)換為IEEE十六進(jìn)制字符串
cell2mat 將單元格數(shù)組轉(zhuǎn)換為數(shù)組
cell2struct 將單元格數(shù)組轉(zhuǎn)換為結(jié)構(gòu)數(shù)組
cellstr 從字符數(shù)組創(chuàng)建字符串?dāng)?shù)組
mat2cell 將數(shù)組轉(zhuǎn)換為具有潛在不同大小的單元格的單元陣列
num2cell 將數(shù)組轉(zhuǎn)換為具有一致大小的單元格的單元陣列
struct2cell 將結(jié)構(gòu)轉(zhuǎn)換為單元格數(shù)組

數(shù)據(jù)類型確定

MATLAB提供了用于識別變量數(shù)據(jù)類型的各種函數(shù)现恼。

函數(shù) 描述說明
is 檢測狀態(tài)
isa 確定輸入是否是指定類的對象
iscell 確定輸入是單元格數(shù)組
iscellstr 確定輸入是字符串的單元格數(shù)組
ischar 確定項目是否是字符數(shù)組
isfield 確定輸入是否是結(jié)構(gòu)數(shù)組字段
isfloat 確定輸入是否為浮點數(shù)組
ishghandle 確定是否用于處理圖形對象句柄
isinteger 確定輸入是否為整數(shù)數(shù)組
isjava 確定輸入是否為Java對象
islogical 確定輸入是否為邏輯數(shù)組
isnumeric 確定輸入是否是數(shù)字?jǐn)?shù)組
isobject 確定輸入是否為MATLAB對象
isreal 檢查輸入是否為實數(shù)數(shù)組
isscalar 確定輸入是否為標(biāo)量
isstr 確定輸入是否是字符數(shù)組
isstruct 確定輸入是否是結(jié)構(gòu)數(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中的運算符既可用于標(biāo)量數(shù)據(jù)也可用于非標(biāo)量數(shù)據(jù)

MATLAB允許以下類型的基本操作

  • 算術(shù)運算符
  • 關(guān)系運算符
  • 邏輯運算符
  • 按位運算符
  • 集合運算符

算術(shù)運算符

MATLAB允許兩種不同類型的算術(shù)運算

  • 矩陣算術(shù)運算
  • 數(shù)組算術(shù)運算
  • 矩陣算術(shù)運算與線性代數(shù)中定義的相同
  • 在一維和多維數(shù)組中,逐個元素執(zhí)行數(shù)組運算
  • 矩陣運算符和數(shù)組運算符由句點符號.區(qū)分

然而衍慎,由于對于矩陣和陣列的加減運算是相同的稳捆,因此對于這兩種情況乔夯,運算符相同

運算符 描述說明
+ 加法或一元加法運算侧纯。A + B表示相加存儲在變量AB中的值眶熬。AB必須具有相同的大小娜氏,除非是標(biāo)量牍白。 標(biāo)量可以添加到任何大小的矩陣。
- 減法或一元減法運算最岗。 A-B表示從A中減去B的值般渡。AB必須具有相同的大小驯用,除非是標(biāo)量蝴乔∑停可以從任何大小的矩陣中減去標(biāo)量雕沿。
* 矩陣乘法审轮。 C = A * B是矩陣AB的線性代數(shù)乘積断国。更準(zhǔn)確地說,執(zhí)行公式:C\left( i,j\right) =\sum ^{n}_{k=1}A\left( i,k\right) B\left( k,j\right)薄疚,對于非標(biāo)量AB街夭,A的列數(shù)必須等于B的行數(shù)。標(biāo)量可以乘以任何大小的矩陣埃碱。
.* 陣列乘法砚殿。 A .* B是數(shù)組AB的逐個元素乘積似炎。AB必須具有相同的大小,除非它們之一是標(biāo)量仆嗦。
/ 數(shù)組乘法欧啤。A .* B是數(shù)組AB的逐個元素乘積邢隧。AB必須具有相同的大小倒慧,除非它們之一是標(biāo)量纫谅。
./ 數(shù)組右除。A./B是具有元素A(i询吴,j)/ B(i猛计,j)的矩陣奉瘤。 AB必須具有相同的大小,除非它們之一是標(biāo)量肌访。
\ 反斜杠或數(shù)組左除吼驶。如果A是一個方陣,A \ Binv(A)* B大致相同酒请,除了以不同的方式計算布朦。如果An×n矩陣是趴,B是具有n個分量的列向量或具有若干這樣的列的矩陣唆途,則X = A \ B是方程AX = B的解。如果A是不規(guī)則或幾乎單數(shù)温赔,將顯示警告消息让腹。
.\ 陣列左除。A .\ B是具有元素B(i腹纳,j)/ A(i,j)的矩陣佃牛。AB必須具有相同的大小俘侠,除非它們之一是標(biāo)量。
^ 矩陣 X ^ pXP次冪惫东,如果p是標(biāo)量颓遏。 如果p是整數(shù)叁幢,則通過重復(fù)平方來計算冪值力喷。 如果整數(shù)為負(fù)弟孟,則X首先倒置庭猩。 對于p的其他值蔼水,計算涉及特征值和特征向量,使得如果[V优炬,D] = eig(X)蠢护,則X ^ p = V * D. ^ p / V
.^ 陣列冪值贬芥, A ^ BB(i,j)A(i威沫,j)的冪矩陣孵构。AB必須具有相同的大小颈墅,除非它們之一是標(biāo)量。
' 矩陣轉(zhuǎn)置毒坛。 'A的線性代數(shù)轉(zhuǎn)置。對于復(fù)數(shù)矩陣豪直,這是復(fù)共軛轉(zhuǎn)置。
.' 數(shù)組轉(zhuǎn)置唆貌。.'A的數(shù)組轉(zhuǎn)置。對于復(fù)數(shù)矩陣,這不涉及共軛骂倘。

示例

以下示例顯示了算術(shù)運算符對標(biāo)量數(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

運行文件時荧库,會產(chǎn)生以下結(jié)果

c =  30
d = -10
e =  200
f =  0.50000
g =  2
z =  343

關(guān)系運算符

關(guān)系運算符也可以用于標(biāo)量非標(biāo)量數(shù)據(jù)场刑。數(shù)組的關(guān)系運算符在兩個數(shù)組之間執(zhí)行逐個元素的比較,并返回相同大小的邏輯數(shù)組瞎疼,如果為真喜喂,則元素設(shè)置為邏輯1(true)照弥,如果為假这揣,則元素設(shè)置為邏輯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

除了上述關(guān)系運算符之外,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ù):

  • 逐元素 - 這些運算符對邏輯陣列的相應(yīng)元素進(jìn)行操作。
  • 短路 - 這些運算符在標(biāo)量和邏輯表達(dá)式上運行。

元素邏輯運算符在邏輯數(shù)組上運行逐個元素征字。符號匙姜,|?是邏輯數(shù)組運算符AND畅厢,ORNOT

短路邏輯運算符允許邏輯運算短路氮昧。符號&&||是邏輯短路運算符ANDOR

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的語法寫的文章,而又因為表格與|沖突,因此用代替|.
假設(shè)A = 60B = 13

現(xiàn)在以二進(jì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ù)ab的位與AND操作
bitcmp(a) a的比特補碼
bitget(a,pos) 在整數(shù)數(shù)組a中,獲取指定的位置pos位字節(jié)
bitor(a, b) 整數(shù)ab的逐位OR操作
bitset(a, pos) 設(shè)置在指定pos處的位字節(jié)
bitshift(a, k) 返回向左移位k字節(jié)寸癌,相當(dāng)于乘以2^k专筷。 k的負(fù)值對應(yīng)于向右移位或除以2^k,并舍入到最接近的整數(shù)到負(fù)無窮大。任何溢出位都被截斷
bitxor(a, b) 整數(shù)ab的逐字節(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) 設(shè)置兩個陣列的交集; 也就是返回AB共同的值溪烤。返回的值按排序順序排列味咳。
intersect(A,B,’rows’) A的每一行和B的每一行視為單個實體,并返回AB兩者共同的行檬嘀。返回矩陣的行按排序順序排列槽驶。
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-11-by-N的字符串?dāng)?shù)組炮叶。 如果Asort(A)的輸出相等碗旅,則認(rèn)為A被排序。
issorted(A, ‘rows’) 如果二維矩陣A的行按排序順序返回邏輯1(真)镜悉,否則返回邏輯0(假)祟辟。 如果A和排序(A)的輸出相等,則認(rèn)為矩陣A被排序侣肄。
setdiff(A,B) 設(shè)置兩個數(shù)組的差異; 返回A中不在B中的值旧困。返回的數(shù)組中的值按排序順序排列。
setdiff(A,B,’rows’) A的每一行和B的每一行視為單個實體稼锅,并從不在B中的A返回行吼具。返回的矩陣的行按排序順序排列。'rows'選項不支持單元格數(shù)組矩距。
setxor 設(shè)置兩個數(shù)組的異或
union 設(shè)置兩個數(shù)組的并集
unique 使數(shù)組中的值唯一

下期將會進(jìn)入令人激動的基本的決策語句, 并會介紹Matlab的矩陣包括它們的用法.

References

https://www.yiibai.com/matlab/matlab_syntax.html

本人借鑒以上網(wǎng)站,并對每一個案例進(jìn)行測試以及改正; 并且希望通過這幾篇文章使查閱matlab資料不在如此麻煩,有一個統(tǒng)一的整理, 輕松學(xué)習(xí)matlab.

另外,歡迎大家關(guān)注我們的微信公眾號浮生有雨禿頭路.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拗盒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子锥债,更是在濱河造成了極大的恐慌陡蝇,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哮肚,死亡現(xiàn)場離奇詭異登夫,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)绽左,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門悼嫉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來艇潭,“玉大人拼窥,你說我怎么就攤上這事√D” “怎么了鲁纠?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鳍寂。 經(jīng)常有香客問我改含,道長,這世上最難降的妖魔是什么迄汛? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任捍壤,我火速辦了婚禮,結(jié)果婚禮上鞍爱,老公的妹妹穿的比我還像新娘鹃觉。我一直安慰自己,他們只是感情好睹逃,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布盗扇。 她就那樣靜靜地躺著祷肯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疗隶。 梳的紋絲不亂的頭發(fā)上佑笋,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機(jī)與錄音斑鼻,去河邊找鬼蒋纬。 笑死,一個胖子當(dāng)著我的面吹牛坚弱,可吹牛的內(nèi)容都是我干的颠锉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼史汗,長吁一口氣:“原來是場噩夢啊……” “哼琼掠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起停撞,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤它抱,失蹤者是張志新(化名)和其女友劉穎芽偏,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡但壮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了著蟹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煞肾。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖道宅,靈堂內(nèi)的尸體忽然破棺而出食听,到底是詐尸還是另有隱情,我是刑警寧澤污茵,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布樱报,位于F島的核電站,受9級特大地震影響泞当,放射性物質(zhì)發(fā)生泄漏迹蛤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一襟士、第九天 我趴在偏房一處隱蔽的房頂上張望盗飒。 院中可真熱鬧,春花似錦陋桂、人聲如沸逆趣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汗贫。三九已至身坐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間落包,已是汗流浹背部蛇。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留咐蝇,地道東北人涯鲁。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像有序,于是被迫代替她去往敵國和親抹腿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354