MATLAB矩陣及其運算(三)矩陣的創建

3.1 元素輸入法

元素輸入法是最簡單,也是最常用的一種矩陣的生成方法。例如:

注意:

  1. 整個矩陣必須用“[]”括起來;
  2. 元素之間必須用逗號“,”或空格分開;
  3. 矩陣的行與行之間必須用“;”或者回車鍵“Enter”隔開;
  4. 元素按照先列后行的方式進行存儲。

3.2 設定步長生成法

設定步長生成法用于生成一維行數組。

格式:x=a:inc:b

其中a是數組的第一個元素;inc是相鄰兩個元素之間的間隔;b是數組的最后一個元素。

例如:x=1:3:25

說明:

(1)若b-a是inc的整數倍,則最后一個元素是b;否則小于b。

(2)若inc=1,可簡寫為x=a:b。

(3)inc可以取整數,也可以取復數。

遇到的警告 "Colon operands must be real scalars" 是因為在 MATLAB 中使用冒號運算符?:?時,中間的步長值使用了復數?3i

冒號運算符的正確語法是?start:step:end,其中?startstep?和?end?都必須是實數標量,而不能是復數。

在例子中,雖然寫了?1:3i+6:25,但 MATLAB 實際上忽略了復數部分的虛部,只使用了實部進行計算:

  • 起始值:1
  • 步長值:6(因為?3i?的實部是 0,0+6=6)
  • 結束值:25

所以最終結果?A = [1 7 13 19 25]?實際上是按照?1:6:25?計算得到的,這就是為什么雖然有警告但仍然得到了結果。

如果你確實需要生成包含復數的數組,可以使用其他方法,例如:

3.3 均勻采樣生成法

均勻采樣生成法用于生成一維行數組。

格式:x=linspace(a,b,n)

其中,a,b分別為生成數組的第一個和最后一個元素;n為采樣總點數。

例如:x=linspace(1,25,3)

從定義可以看出,該指令的作用與x=a:(b-a)/(n-1):b相同。

3.4 幾種特殊矩陣的創建

特殊矩陣的創建命令如下表:

命令

說明

[]

空矩陣

zeros

全零矩陣

ones

全一矩陣

eye

單位矩陣

magic

魔方矩陣

rand

均勻隨機矩陣

randn

高斯隨機矩陣

diag

對角矩陣

(1)空矩陣

A=[] ?%用于刪除某個元素或者矩陣。

例:把矩陣A的第一個元素刪除。

如下:

(2)全零矩陣

A=zeros(2,3) ?%生成元素全為零的2×3階矩陣。

(3)全一矩陣

A=ones(2,3) ??%生成元素全為1的2×3階矩陣。

(4)單位矩陣

A=eye(3,4) %使用eye(m,n)可得到一個允許的最大單位矩陣,其他位置補零。

(5)魔方矩陣

X=magic(3) ?%用于產生一個3×3階的魔方矩陣。

魔方矩陣(Magic Square)是一種特殊的n 階方陣,其核心特征是每行、每列以及兩條主對角線的元素之和都相等,這個相等的和被稱為 “魔數”(Magic Constant)。

魔方矩陣在數學、數論、組合數學以及趣味數學中都有重要地位,且具有深厚的歷史背景,古代文明(如中國、印度、阿拉伯等)都曾研究過這類矩陣。

魔方矩陣的核心性質

  1. 階數定義:通常以 “n 階” 表示,指矩陣的行數和列數均為 n(n≥1,且多為正整數)。
  2. 魔數計算:對于 n 階魔方矩陣(元素為 1 到 n2 的連續整數,即 “標準魔方矩陣”),其魔數固定為:
    魔數 = n×(n2 + 1)÷2
    例如:
    • 3 階魔方矩陣的魔數為 3×(9 + 1)÷2 = 15;
    • 4 階魔方矩陣的魔數為 4×(16 + 1)÷2 = 34。
  3. 元素特點:標準魔方矩陣的元素是 1 到 n2 的連續整數,且每個數只出現一次(即 “幻方” 的經典定義);非標準魔方矩陣可以使用其他數字,但需滿足行、列、對角線和相等的條件。

常見階數的魔方矩陣示例

3 階魔方矩陣(最經典)

3 階魔方矩陣是最小的奇數階非平凡魔方矩陣,其元素為 1-9,每行、每列、對角線之和均為 15:

  • 行:8+1+6=15,3+5+7=15,4+9+2=15;
  • 列:8+3+4=15,1+5+9=15,6+7+2=15;
  • 對角線:8+5+2=15,6+5+4=15。
4 階魔方矩陣(偶數階)

4 階魔方矩陣元素為 1-16,魔數為 34,例如:

魔方矩陣的分類

根據階數的奇偶性,魔方矩陣可分為兩類:

奇數階魔方矩陣(n 為奇數)

可通過 “Siamese 方法”(斜步法)構造,核心是從矩陣底部中間位置開始,按特定方向(通常是右上)依次填入數字,遇到邊界或已填元素時調整位置。

偶數階魔方矩陣

當 n 為4 的倍數(如 4、8 階):可通過 “對稱交換法” 構造,將矩陣分為 4×4 子塊,交換特定位置的元素。

當 n 為2 的倍數但不是 4 的倍數(如 6、10 階):構造更復雜,需結合奇數階的構造方法分段處理(稱為 “單偶數階”)。

魔方矩陣的應用與意義

  • 數學研究:作為組合數學的經典問題,其構造方法涉及數論和對稱性分析。
  • 歷史文化:古代被視為神秘符號,如中國的 “洛書”(3 階魔方矩陣)被認為是最早的魔方矩陣之一,記載于《周易》等典籍中。
  • 計算機科學:常用于算法設計(如矩陣填充、回溯法練習)和密碼學中的隨機數生成參考。

(6)隨機矩陣

1. rand()均勻隨機矩陣用于生成(0,1)區間上均勻分布的隨機變量,其基本語法如下:

rand([M,N,P,...] )

例:

A=rand(2,4) %生成隨機的2×4階矩陣

生成排列成M×N×P...多維向量的隨機數。如果只寫M,則生成M×M階矩陣;如果參數為[M,N],則可以省略到方括號。

2. randn()高斯隨機矩陣用于生成服從標準正態分布(均值為0,方差為1)的隨機數,其基本語法和rand()類似:

randn([M,N,P...])

生成排列成M×N×P...多維向量的隨機數。如果只寫M,則生成M×M階矩陣;如果參數為[M,N],可以省略掉方括號。

3. rand() 與 randn() 的核心對比

維度

rand()

randn()

分布類型

(0, 1) 區間均勻分布

標準正態分布(均值 0,方差 1)

語法共性

維度參數規則、括號省略邏輯完全一致

維度參數規則、括號省略邏輯完全一致

應用場景差異

需“無偏向隨機數”場景(如等概率模擬、均勻初始化)

需“自然波動規律”場景(如噪聲模擬、正態分布物理量建模)

4. 理解“生成排列成多維向量的隨機數”,需結合 Matlab 中數組的維度特性、函數參數規則來拆解,核心邏輯如下:

1. “多維向量”實為 多維數組

在 Matlab 語境中,此處“向量”是廣義的數組概念(突破數學中“一維向量”的狹義定義)。Matlab 支持創建任意維度的數組(如二維矩陣、三維“行-列-頁”結構、四維及以上張量),因此“多維向量”本質是多維數組

2. M,N,P...的作用:定義各維度的長度

rand()/randn()?的參數 是維度尺寸參數,每個字母對應一個維度的“長度”:

  • 第 1 個參數 ?→ 數組第 1 維的長度(如“行數”);
  • 第 2 個參數 ?→ 數組第 2 維的長度(如“列數”);
  • 第 3 個參數 ?→ 數組第 3 維的長度(如“頁數/層數”);
  • 更多參數 → 對應更高維度的長度。
3. “排列成M×N×P... ”:按維度參數構造數組結構

函數會先根據M,N,P...的數量和數值,確定數組的維度數量各維度大小,再在這個預定義結構中填充隨機數。結合場景具象化理解:

(1)二維數組(矩陣)場景

若輸入 2 個參數 M,N(如 rand(2, 4)):

  • 維度數量:2 維(行、列);
  • 各維長度:第 1 維(行)長度 = M=2,第 2 維(列)長度 = N=4;
  • 結果:生成 2 行 4 列的二維數組(矩陣),每個元素是 rand()?生成的 (0,1) 均勻隨機數,或 randn()?生成的標準正態分布數。
(2)三維數組場景

若輸入 3 個參數M,N,P(如 rand(2, 3, 2)):

  • 維度數量:3 維(行、列、頁);
  • 各維長度:第 1 維(行)=M=1 ,第 2 維(列)=N=3?,第 3 維(頁)=P=2?;
  • 結果:生成 “2 行 × 3 列 × 2 頁”?的三維數組。可想象為“2 個獨立的 2 行 3 列矩陣疊在一起”,每個位置填充隨機數。

(3)更高維數組場景

若輸入 4 個參數M,N,P,Q(如 rand(1, 2, 3, 4)):

  • 維度數量:4 維;
  • 各維長度:第 1 維 = M=1,第 2 維 =N=2?,第 3 維 = P=3,第 4 維 = Q=4;
  • 結果:生成 1×2×3×4?的四維數組,結構由 4 個維度長度共同定義,每個元素位置填充隨機數。

5. 在 Matlab 中,“擴展數組到更高維度”可通過生成新的高維數組或改造已有數組維度實現。結合rand()/randn()?的語法邏輯,以下是詳細方法拆解:

對已有數組擴展維度(非隨機數組的維度改造)

若要對已存在的非隨機數組(如數值矩陣、向量)擴展維度,可通過以下通用方法:

1. 使用 cat() 函數“沿維度拼接”

cat(DIM, A, B, ...)?可沿指定維度 DIM?拼接多個數組,實現維度擴展。

示例:將兩個 2×3 矩陣沿第 3 維拼接,得到 2×3×2 三維數組:


A = ones(2, 3); ?% 2×3 全1矩陣

B = zeros(2, 3); % 2×3 全0矩陣

C = cat(3, A, B);% 沿第3維拼接,生成 2×3×2 三維數組

2. 使用 reshape() 函數“重塑維度”

reshape(A, M, N, P, ...)?可將數組 A?重塑為指定維度的新數組(要求元素總數匹配)。

示例:將 1×6 行向量重塑為 2×3 矩陣(二維),或 1×2×3 三維數組:


V = 1:6; ?????????????????% 1×6 行向量(元素總數6)

M2 = reshape(V, 2, 3); ???% 重塑為 2×3 矩陣(2×3=6,元素總數匹配)

M3 = reshape(V, 1, 2, 3); % 重塑為 1×2×3 三維數組(1×2×3=6,元素總數匹配)

3. 直接賦值“擴展維度”

對數組的新維度位置直接賦值,Matlab 會自動擴展維度并填充默認值(如 NaN?或 0,依場景而定)。

示例:將 2×3 矩陣擴展為 2×3×2 三維數組:


A = ones(2, 3); ?% 2×3 矩陣

A(:, :, 2) = 2; ?% 給第3維的第2層賦值,自動擴展維度為 2×3×2

4. 擴展數組維度的核心路徑

場景

核心方法

示例(代碼片段)

生成隨機高維數組

rand()/randn()?的多維度參數 [M, N, P, …]?定義維度大小

rand(2, 3, 2)?生成 2×3×2 均勻隨機三維數組

擴展已有數組維度

cat()?沿指定維度拼接;② reshape()?重塑維度;③ 直接賦值新維度位置

cat(3, A, B)?沿第3維拼接數組;reshape(V, 1, 2, 3)?重塑維度

通過上述方法,可以靈活地在 Matlab 中創建或改造數組維度,覆蓋從二維矩陣到高維張量的多樣化需求。

(7)對角矩陣

(1)diag(x),當輸入x為向量的時候,輸出結果為對角矩陣。

當輸入x是一個向量(可以是行向量或列向量)時,diag(x)的輸出是一個對角矩陣

  • 矩陣的主對角線(從左上角到右下角的對角線)元素為向量x的各個分量;
  • 矩陣的其他位置元素均為0;
  • 矩陣的階數(行數和列數)等于向量x的長度。

示例

x = [a, b, c](長度為3的行向量),則:

具體數值例子:設x = [1, 2, 3],則:

    (2)diag(x,k),形成以x作為第k條對角線元素,其他位置為0的矩陣。

    當輸入x是向量,且額外指定參數k時,diag(x, k)的輸出是一個非主對角線矩陣:

    1. 矩陣的第k條對角線元素為向量x的各個分量;
    2. 其他位置元素均為0;
    3. k的含義:k=0表示主對角線,k>0表示主對角線上方第k條對角線,k<0表示主對角線下方第|k|條對角線;
    4. 矩陣的階數:若x長度為n,則矩陣階數為n + |k|(確保x的所有元素能放在第k條對角線上)。

    示例:

    設x = [1, 2](長度為2),k=1(主對角線上方第1條對角線),則矩陣階數為2 + 1 = 3,輸出為:

    • k=-1(主對角線下方第1條對角線),輸出為:

      (3)當輸入x為矩陣的時候,輸出結果為提取該矩陣對角線元素形成的列向量。

      當輸入x是一個矩陣時,diag(x)的輸出是一個列向量:

      向量的元素為矩陣x的主對角線元素(從左上角到右下角依次提取);

      向量長度等于矩陣x的階數(若x是n×n矩陣,則向量長度為n)。

      示例

      x是3×3矩陣:

      其主對角線元素為1, 5, 9,則:

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

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

      相關文章

      JVM分析(OOM、死鎖、死循環)(JProfiler、arthas、jdk調優工具(命令行))

      JVM分析&#xff08;OOM、死鎖、死循環&#xff09;&#xff08;JProfiler、arthas、jdk調優工具&#xff08;命令行&#xff09;&#xff09; 本文聲明&#xff1a; 以下內容均為 JDK 8 springboot 2.6.13 &#xff08;windows 11 或 CentOS 7.9.2009 &#xff09;進行 ssh連…

      深度學習中的數據增強實戰:基于PyTorch的圖像分類任務優化

      在深度學習的圖像分類任務中&#xff0c;我們常常面臨一個棘手的問題&#xff1a;訓練數據不足。無論是小樣本場景還是模型需要更高泛化能力的場景&#xff0c;單純依靠原始數據訓練的模型很容易陷入過擬合&#xff0c;導致在新數據上的表現不佳。這時候&#xff0c;數據增強&a…

      IEEE 802.11 MAC架構解析:DCF與HCF如何塑造現代Wi-Fi網絡?

      IEEE 802.11 MAC架構解析:DCF與HCF如何塑造現代Wi-Fi網絡? 你是否曾好奇,當多個設備同時連接到同一個Wi-Fi網絡時,它們是如何避免數據沖突并高效共享無線信道的?這背后的核心秘密就隱藏在IEEE 802.11標準的MAC(媒體訪問控制)子層架構中。今天,我們將深入解析這一架構的…

      深入掌握sed:Linux文本處理的流式編輯器利器

      一、前言&#xff1a;sed是什么&#xff1f; 二、sed的工作原理 數據處理流程&#xff1a; 詳細工作流程&#xff1a; 三、sed命令常見用法 基本語法&#xff1a; 常用選項&#xff1a; 常用操作命令&#xff1a; 四、實用示例演示 1. 輸出符合條件的文本&#xff08;…

      k8s三階段項目

      k8s部署discuz論壇和Tomcat商城 一、持久化存儲—storageclassnfs 1.創建sa賬戶 [rootk8s-master scnfs]# cat nfs-provisioner-rbac.yaml # 1. ServiceAccount&#xff1a;供 NFS Provisioner 使用的服務賬號 apiVersion: v1 kind: ServiceAccount metadata:name: nfs-prov…

      Zynq開發實踐(FPGA之流水線和凍結)

      【 聲明&#xff1a;版權所有&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】談到fpga相比較cpu的優勢&#xff0c;很多時候我們都會談到數據并發、邊接收邊處理、流水線這三個方面。所以&#xff0c;第三個優勢&#xff0c;也…

      接口保證冪等性你學廢了嗎?

      接口冪等性定義&#xff1a;無論一次或多次調用某個接口&#xff0c;對資源產生的副作用都是一致的。 簡單來說&#xff1a;用戶由于各種原因&#xff08;網絡超時、前端重復點擊、消息重試等&#xff09;對同一個接口發了多次請求&#xff0c;系統只能處理一次&#xff0c;不能…

      入行FPGA選擇國企、私企還是外企?

      不少人想要轉行FPGA&#xff0c;但不知道該如何選擇公司&#xff1f;下面就來為大家盤點一下FPGA大廠的薪資和工作情況&#xff0c;歡迎大家在評論區補充。一、老牌巨頭在 FPGA設計 領域深耕許久&#xff0c;流程完善、技術扎實&#xff0c;公司各項制度都很完善&#xff0c;前…

      考研總結,25考研京區上岸總結(踩坑和建議)

      我的本科是一所普通的雙非&#xff0c;其實&#xff0c;從我第一天入學時候&#xff0c;我就想走出去&#xff0c;開學給我帶來的更多是失望&#xff08;感覺自己高考太差勁了&#xff09;&#xff0c;是不甘心&#xff08;自己一定可以去更好的地方&#xff09;。我在等一次機…

      基于數據挖掘的當代不孕癥醫案證治規律研究

      標題:基于數據挖掘的當代不孕癥醫案證治規律研究內容:1.摘要 背景&#xff1a;隨著現代生活方式的改變&#xff0c;不孕癥的發病率呈上升趨勢&#xff0c;為探索有效的中醫證治規律&#xff0c;數據挖掘技術為其提供了新的途徑。目的&#xff1a;運用數據挖掘方法研究當代不孕癥…

      《sklearn機器學習》——調整估計器的超參數

      GridSearchCV 詳解&#xff1a;網格搜索與超參數優化 GridSearchCV 是 scikit-learn 中用于超參數調優的核心工具之一。它通過系統地遍歷用戶指定的參數組合&#xff0c;使用交叉驗證評估每種組合的性能&#xff0c;最終選擇并返回表現最優的參數配置。這種方法被稱為網格搜索&…

      一站式可視化運維:解鎖時序數據庫 TDengine 的正確打開方式

      小T導讀&#xff1a;運維數據庫到底有多復雜&#xff1f;從系統部署到數據接入&#xff0c;從權限配置到監控告警&#xff0c;動輒涉及命令行、腳本和各種文檔查找&#xff0c;一不留神就可能“翻車”。為了讓 TDengine 用戶輕松應對這些挑戰&#xff0c;我們推出了《TDengine …

      多線程同步安全機制

      目錄 以性能換安全 1.synchronized 同步 &#xff08;1&#xff09;不同的對象競爭同一個資源&#xff08;鎖得住&#xff09; &#xff08;2&#xff09;不同的對象競爭不同的資源&#xff08;鎖不住&#xff09; &#xff08;3&#xff09;單例模式加鎖 synchronized …

      多路復用 I/O 函數——`select`函數

      好的&#xff0c;我們以 Linux 中經典的多路復用 I/O 函數——select 為例&#xff0c;進行一次完整、深入且包含全部代碼的解析。 <摘要> select 是 Unix/Linux 系統中傳統的多路復用 I/O 系統調用。它允許一個程序同時監視多個文件描述符&#xff08;通常是套接字&…

      嵌入式碎片知識總結(二)

      1.repo的一個問題&#xff1a;repo init -u ssh://shchengerrit.bouffalolab.com:29418/bouffalo/manifest/bouffalo_sdk -b master -m allchips-internal.xml /usr/bin/repo:681: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in…

      java中二維數組筆記

      課程鏈接:黑馬程序員java零基礎[上] 1.二維數組的內存分布 在 Java 中&#xff0c;二維數組并不是一整塊連續的二維空間&#xff0c;而是數組的數組。具體而言,在聲明一個二維數組&#xff1a;如int[][] arr new int[2][3];時&#xff0c;內存中會發生如下: 1.1 棧上的引用變…

      系統架構設計師備考第13天——計算機語言-多媒體

      一、多媒體基礎概念媒體的分類 感覺媒體&#xff1a;人類感官直接接收的信息形式&#xff08;如聲音、圖像&#xff09;。表示媒體&#xff1a;信息的數字化表示&#xff08;如JPEG圖像、MP3音頻&#xff09;。顯示媒體&#xff1a;輸入/輸出設備&#xff08;如鍵盤、顯示器&am…

      指針高級(1)

      1.指針的運算2.指針運算有意義的操作和無意義的操作、#include <stdio.h> int main() {//前提條件&#xff1a;保證內存空間是連續的//數組int arr[] { 1,2,3,4,5,6,7,8,9,10 };//獲取0索引的內存地址int* p1 &arr[0];//通過內存地址&#xff08;指針P&#xff09;…

      【可信數據空間-Trusted Data Space綜合設計方案】

      可信數據空間-Trusted Data Space綜合設計方案 一.簡介與核心概念 1.什么是可信數據空間 2.核心特征 3.主要應用場景 二、 產品設計 1. 產品定位 2. 目標用戶 3. 核心功能模塊 a. 身份與訪問管理 b. 數據目錄與服務發現 c. 策略執行與合約管理 d. 數據連接與計算 e. 審計與溯源…

      技術方案之Mysql部署架構

      一、序言在后端系統中&#xff0c;MySQL 作為最常用的關系型數據庫&#xff0c;其部署架構直接決定了業務的穩定性、可用性和擴展性。你是否遇到過這些問題&#xff1a;單機 MySQL 突然宕機導致業務中斷幾小時&#xff1f;高峰期數據庫壓力過大&#xff0c;查詢延遲飆升影響用戶…