Matlab教程004:Matlab矩陣的拼接重構重排以及矩陣的運算

文章目錄

      • 1.4.3 矩陣的拼接重構重排
        • 1.4.3.1 橫向拼接
        • 1.4.3.2 縱向拼接
        • 1.4.3.3 矩陣的重構重排
      • 1.4.4 矩陣的運算
        • 1.4.4.1 算數運算
        • 1.4.4.2 矩陣加減
        • 1.4.4.3 矩陣乘法
        • 1.4.4.4 矩陣轉置

1.4.3 矩陣的拼接重構重排

image-20250325164644713

1.4.3.1 橫向拼接

A和B的行數相同,那么使用[A,B][A B]以及cat(2,A,B)都能將A和B橫向拼接成一個大的矩陣。

B = [1:4;2:5;3:6;];
C = ones(3,2);
D = [B,C];
D2 = cat(2,B,C);
% 打印結果
D2 =1     2     3     4     1     12     3     4     5     1     13     4     5     6     1     1
1.4.3.2 縱向拼接

A和B的列數相同,那么使用[A;B]以及cat(1,A,B)都能將A和B以縱向拼接為一個大的矩陣。

% 縱向拼接
B2 = ones(2,4);
% 方式1
D3 = [B;B2];
% 方式2
D4 = cat(1,B,B2)
% 打印結果
D3 =1     2     3     42     3     4     53     4     5     61     1     1     11     1     1     1
1.4.3.3 矩陣的重構重排

(1)reshape函數:更改矩陣的形狀,reshape(A,m,n)或者reshape(A,[m,n])

A = randi(10,2,6);
A
B = reshape(A,3,4);
B% 打印結果
A =3    10    10    10     6     31     7     2     8     5     8B =3     7    10     51    10     8     310     2     6     8

(2)sort函數:對向量或者矩陣進行排序,sort(A,dim),在最后面加一個輸入參數descend,變成從大到小的降序排列

  • dim=1時,沿著行方向(從上至下)對矩陣的每一列升序排列。
  • dim=2時,沿著列方向(從左至右)對矩陣的每一列升序排列。
A = randi(10,2,6);
A
sort(A,1)
% 輸出結果
A =9     7     5     9     4     36    10     1     7    10     7ans =6     7     1     7     4     39    10     5     9    10     7% 按照每一行進行單獨排序
sort(A,2)
% 排序結果
ans =2     5     6     7     8     91     2     2     4     4     8% 降序排列
sort(A,2,'descend')
ans =10    10     7     4     4     18     7     3     3     2     1

(3)sortrows函數:基于矩陣的某一列對矩陣進行排序,同一行的元素不會改變。sortrows(score,列),在最后面加一個輸入參數descend,變成從大到小的降序排列。

sortrows(A,2,"descend")ans =5     9     1     1    10    103     3    10     6     9     1

1.4.4 矩陣的運算

1.4.4.1 算數運算
函數名函數的作用
sum求和函數
prod求乘積函數
cumsum計算累積和
diff計算差分
mean計算平均值
median計算中位數
mode計算眾數
var計算方差
std計算標準差
min求最小值
max求最大值

如下是函數的幾個例子:

%% 矩陣運算
clear;
clc;
A = randi(10,3,4);
A
sum(A,1) %參數為1的時候,計算每一列的和
sum(A,2) % 計算每一行的和
sum(A(:))
sum(A,'all')prod(A(:))
prod(A,"all")% 運算結果
A =2     6     9     24     5     5     41    10     9    10ans =7    21    23    16ans =191830ans =67ans =67ans =77760000ans =77760000
1.4.4.2 矩陣加減

(1)矩陣加法(+)

矩陣加法是 對應位置的元素相加,要求兩個矩陣的大小相同。

示例:

A = [1 2; 3 4];
B = [5 6; 7 8];
C = A + B  % 逐元素相加

結果:

C =6     810    12

(2)矩陣減法(-)

矩陣減法與加法類似,是對應元素相減,要求兩個矩陣大小相同。

示例:

A = [10 20; 30 40];
B = [1 2; 3 4];
C = A - B  % 逐元素相減

結果:

C =9    1827    36

(3)標量與矩陣的加減

如果是一個 標量矩陣 進行加法或減法,則標量會與矩陣的 每個元素 進行運算。

示例:

A = [1 2; 3 4];
C = A + 10  % 每個元素加 10
D = A - 5   % 每個元素減 5

結果:

C =11    1213    14D =-4    -3-2    -1

(4)矩陣與相同列數的行向量

如果一個是矩陣A,另外一個是具有相同列數的行向量B,則把B堆疊成完全相同的兩行,然后再和A相加。

示例:

A = 3 5 66 9 4
B = 3 9 6

結果:

ans =6    14    129    18    10

(5)矩陣與相同行數的列向量

如果一個是矩陣A,另外一個是具有相同行數的列向量B,則把B堆疊成完全相同的三列,然后再和A相加。

示例:

A = 3 6 52 6 8
B = 65

結果:

ans =9 12 117 11 13

(6)列向量和行向量相加

如果一個是列向量,另外一個是行向量

示例:

A = 25
B = 1 8 3

結果:

ans =3    10     56    13     8
1.4.4.3 矩陣乘法

MATLAB 提供了 兩種 矩陣乘法方式:

  1. 矩陣乘法(\* —— 線性代數中的矩陣乘法(點積)。
  2. 逐元素乘法(.\* —— 對應元素相乘。

(1)矩陣乘法遵循線性代數規則,即:

  • A 的列數 必須等于 B 的行數m×n 矩陣 × n×p 矩陣 → m×p 矩陣)。
  • 計算方式是 行與列的點積

示例:

A = [1 2; 3 4];  % 2×2 矩陣
B = [5 6; 7 8];  % 2×2 矩陣
C = A * B;       % 進行矩陣乘法

計算步驟:

image-20250326221650801

計算結果:

C =19    2243    50

(2)逐元素乘法(.*

逐元素乘法是 對應位置的元素相乘,要求矩陣大小相同。

示例:

A = [1 2; 3 4];
B = [5 6; 7 8];
C = A .* B;  % 逐元素乘法

計算方式:

image-20250326221825973

計算結果:

C =5    1221    32
1.4.4.4 矩陣轉置

在 MATLAB 中,矩陣的轉置(Transpose)可以使用 '(單引號)transpose() 函數實現。矩陣轉置的作用是將行變為列,列變為行。

(1)使用A'進行矩陣轉置

最常用的方法是使用 '(單引號),它會執行 共軛轉置(conjugate transpose),即:

  • 實數矩陣A' 只是 單純的轉置
  • 復數矩陣A'轉置取共軛(虛部變號)。

示例1:實數矩陣轉置

A = [1 2 3; 4 5 6]; % 2×3 矩陣
B = A';             % 3×2 矩陣
disp(B);

計算方式:

image-20250326222131313

轉置后:

1     4
2     5
3     6

(2)使用 transpose(A)

MATLAB 也提供了 transpose(A) 函數,它 僅執行轉置,不改變復數矩陣的虛部符號。

示例:

A = [1 2 3; 4 5 6];
B = transpose(A);
disp(B);

結果:

1     4
2     5
3     6

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/73872.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73872.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73872.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python小練習系列 Vol.3:生成有效括號組合(回溯 + DFS)

🧠 Python小練習系列 Vol.3:生成有效括號組合(回溯 DFS) 👋 本期我們來刷一道 LeetCode 熱門經典題,借此掌握回溯算法的精髓 —— 生成有效括號組合,是學習遞歸 & DFS 的黃金題型&#xff…

實戰經驗深度解析 | 博睿數據制造行業精選案例集發布!

近年來,我國制造業加速邁向高端化、智能化、綠色化,為經濟高質量發展注入新動能。放眼全球,制造業正加速數字化、智能化轉型,5G、人工智能、邊緣計算等技術與生產全流程深度融合,有力推動柔性化生產與產業鏈協同創新發…

[創業之路-344]:戰略的本質是選擇、聚焦, 是成本/效率/低毛利優先,還是差易化/效益/高毛利優先?無論是成本優先,還是差易化戰略,產品聚焦是前提。

前言: 一、戰略的本質是選擇、聚焦 關于戰略的本質,觸及了商業競爭的核心矛盾:選擇成本優先(效率/低毛利)還是差異化(效益/高毛利),本質上是對企業戰略方向的終極拷問。 1、戰略選…

項目代碼第10講【數據庫運維知識——如何優化數據庫查詢效率?】:各種日志查看;主從復制;分庫分表(MyCat);讀寫分離;區別數據分區、分表、分庫

01. 運維-課程介紹_嗶哩嗶哩_bilibili 一、各種日志查看 二、主從復制 三、分庫分表(MyCat) 四、讀寫分離 五、區別數據分區、分表、分庫 1、數據庫分區 上圖中的ibd文件,是分區表的數據文件,可以分布在不同的物理設備上&…

OpenCV圖像拼接(10)用于實現圖像拼接過程中的時間流逝(timelapse)效果的一個類cv::detail::Timelapser

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 cv::detail::Timelapser 是 OpenCV 庫中用于實現圖像拼接過程中的時間流逝(timelapse)效果的一個類。它通常用于將一系列…

Transformer 通關秘籍2:利用 BERT 將文本 token 化

前面兩節分別通過兩個代碼示例展示了模型將文本轉換為 token 之后是什么樣的,希望你可以對此有一個感性的認識。 本節來簡要介紹一下將一個連續的文本轉換為 token 序列的大致過程,這個過程被稱為分詞,也叫 tokenization。 在你沒了解這方面…

Optional的stream方法,flatMap, filter應用

Java 8引入的Optional和Stream徹底改變了我們處理空值和集合操作的方式。本文將深入探討如何將二者結合使用,通過四個核心場景提升代碼的健壯性和簡潔性。 一、Optional構成的Stream:空值自動過濾 當處理Optional集合時,我們常需要過濾掉空…

參加李繼剛線下活動啟發:未來提示詞還會存在嗎?

上周六,我參加了李繼剛老師組織的線下活動。 現場干貨滿滿,尤其是關于 AI 時代提示詞的價值、與 AI 溝通的藝術等話題,李老師的分享如同醍醐灌頂,讓我對 AI 人機協作有了更深的理解。 將幾點核心收獲整理出來,與大家…

Python基礎知識第二天:從格式化到流程控制

Python基礎知識第二天:從格式化到流程控制 大家好!今天我們來梳理Python的一些重要基礎知識,包括格式化輸出、輸入函數、運算符以及流程控制語句。 1. 格式化輸出 Python提供了多種格式化輸出的方式: # %d, %f, %s 格式化name &q…

GDB: coredump

前言:一句話如下使用 gdb [exec_file] [core_file] # or gdb -c [core_file] [exec_file] #-c指定轉儲的core文件 gdb -c core.5213 spp_uc_frequent_contact_ol_worker # 進入后輸入bt查看調用棧 bt #顯示所有幀棧 bt 10 #顯示前面10個幀棧(感覺沒啥用) bt …

21_js正則_表單驗證

目錄 正則 一、 正則的概念 二、創建正則方式 2.1 構造函數去創建正則 2.2 字面量去創建正則 2,3 test方法 三、正則修飾符 四、 正則的方法 lastIndex test方法 exec 五、字符串方法 replace match search split 六、正則表達式的構成 元字符-- 定位符 元字…

礦山自動化監測解決方案

1.行業現狀 為貫徹落實《中共中央國務院關于推進安全生產領域改革發展的意見》《“十四五”礦山安全生產規劃》(應急〔2022〕64號)、《國務院安委會辦公室關于加強礦山安全生產工作的緊急通知》(安委辦〔2021〕3號)等有關工作部署…

企業級知識庫建設:自建與開源產品集成的全景解析 —— 產品經理、CTO 與 CDO 的深度對話

文章目錄 一、引言二、主流產品與方案對比表三、自建方案 vs. 開源產品集成:技術路徑對比3.1 自建方案3.2 開源產品集成方案 四、結論與個人觀點 一、引言 在當今數據驅動的商業環境中,構建高質量的知識庫已成為企業數字化轉型的關鍵一環。本博客分別從…

【藍橋杯】單片機設計與開發,溫度傳感器DS18B20

一、溫度傳感器概述 結構圖 二、通信過程 三、onewire單總線協議概述 四、單總線的工作原理 黑粗線是單片機發送的,淺的是s18b20回應的 五、溫度傳感器的應用 六、onewire 七、課后習題

Python 在Word中查找并替換文本

在操作Word文檔時,如果想要修正一處反復出現的拼寫錯誤,統一文中前后不一致的術語,或者將文檔中所有的舊聯系方式更新為新號碼。這時我們可以使用 Word中的查找替換功能,快速定位并批量處理文檔中的特定文本,提升編輯效…

Python 筆記 (二)

Python Note 2 1. Python 慢的原因2. 三個元素3. 標準數據類型4. 字符串5. 比較大小: 富比較方法 rich comparison6. 數據容器 (支持*混裝* )一、允許重復類 (list、tuple、str)二、不允許重復類 (set、dict)1、集合(set)2、字典(dict)3、特殊: 雙端隊列 deque 三、數據容器的共…

kill子進程后再wait可以嗎?

在父進程中先使用 kill 函數終止子進程,之后再使用 wait 函數是可行的,下面從原理、使用示例、注意事項幾個方面詳細說明。 原理 kill 函數:其作用是向指定進程發送信號。當向子進程發送 SIGTERM(通常用于請求進程正常終止&…

ai-api-union項目,適配各AI廠商api

項目地址:alpbeta/ai-api-union 需求:實現兼容各大模型廠商api的流式對話和同步對話接口,本項目現兼容智譜、豆包、通義、通義版deepseek 設計 一個ChatController類對外暴露這兩個接口,入參都為ChatRequest請求類,…

【QT】QT樣式設計

QT樣式設計 一、QT工程中添加資源文件1.資源文件:2. 添加步驟:3. 新增資源文件以及刪除現有的資源文件4. 使用資源文件 二、QT中的qss語句(樣式設計語句)1. 樣式設計2.常見的qss語句示例代碼: 一、QT工程中添加資源文件 1.資源文件&#xff…

Megatron-LM中的deepseek-v3實現

Megatron-LM:https://github.com/NVIDIA/Megatron-LM/tree/main 使用此倉庫構建的著名的庫也有很多,如: Colossal-AI, HuggingFace Accelerate, and NVIDIA NeMo Framework.Pai-Megatron-Patch工具是阿里人工智能平臺PAI算法團隊研發,ai-Megatron-Patch…