matlab複雜數據類型(一)

2021-02-21 matlab愛好者

1 元胞數組

元胞數組是一種包含名為元胞的索引數據容器的數據類型,其中的每個元胞都可以包含任意類型的數據。元胞數組通常包含文本字符串列表、文本和數字的組合或不同大小的數值數組。通過將索引括在圓括號 () 中可以引用元胞集。使用大括號 {} 進行索引來訪問元胞的內容。

① 元胞數組的創建

(a) 用花括號"{}"直接創建

例:C = {1,2,3;'text',rand(5,10,2),{11; 22; 33}};

(b) 採用cell(m,n,h,…)命令創建;

例:cell(3,5)

② 元胞數組的訪問 

引用元胞數組的元素有兩種方法。將索引括在圓括號()中以引用元胞集。將索引括在大括號{}中以引用各個元胞中的文本、數字或其他數據。注意:大括號用於表示元胞的內容,小括號表示指定的元胞。要訪問指定元胞中的具體元素,可以在元胞數組內容下標的後面加上指定數組元胞的下標。如:C{2,3}(3,1)表示元胞a{2,3}的元素(3,1)。

例:C = {1,2,3;'text',rand(5,10,2),{11; 22; 33}}; 則C{2,1} = text。

③ 不同類型轉化

cell2mat:將元胞數組轉換為基礎數據類型的普通數組

cell2struct:將元胞數組轉換為結構體數組

cell2table:將元胞數組轉換為表

mat2cell:將數組轉換為可能具有不同元胞大小的元胞數組

num2cell:將數組轉換為相同大小的元胞數組

struct2cell:將結構體轉換為元胞數組

table2cell:將錶轉換為元胞數組

優勢:元胞數組可以存儲不同類型和大小的數據,每一個元胞元都是一個微型數據存儲器。在編程中,有時遇到需要把不同類型和大小數據統一存儲的情況,這時元胞數據就是最好的選擇。

2 結構體

結構體數組是使用名為欄位的數據容器將相關數據組合在一起的數據類型。每個欄位都可以包含任意類型的數據。

① 結構體的創建

(a) 通過對「結構體名+不同欄位」賦值來直接創建,

例2.1:

patient(1).name = 'John Doe';

patient(1).billing = 127.00;

patient(1).test = [79, 75, 73; 180, 178, 177.5];

(b) 使用關鍵字struct

s = struct('field1',values1,'field2',values2,…);

② 結構體的訪問

使用 structName.fieldName 格式的圓點表示法來訪問結構體中的數據。

例:對例2.1中姓名的訪問可用patient(1).name。

③ 數據類型轉化

struct2table:將結構體數組轉換為表

table2struct:將錶轉換為結構體數組

struct2cell:將結構體轉換為元胞數組

cell2struct:將元胞數組轉換為結構體數組

3 函數句柄

函數句柄是一種存儲函數關聯項的數據類型。可以使用函數句柄構造匿名函數或指定回調函數。此外,也可以使用函數句柄將一個函數傳遞給另一個函數,或者從主函數外部調用局部函數。

① 函數句柄的創建與調用

通過在函數名稱前添加一個@符號來為函數創建句柄。

例3.1:

 fun= @(x) x.^2;

調用:

a = 4;

b = fun(a)

ans = 16;

例3.2:由函數句柄組成的數組

C = {@sin, @cos, @tan};

C{2}(pi)

ans = -1;

例3.3:使用結構體數組

S.a = @sin; S.b = @cos; S.c = @tan;

S.a(pi/2)

ans = 1;

② 函數傳遞

使用函數句柄作為其他函數(稱為功能函數)的輸入參數。這些函數基於某個範圍內的值計算數學表達式。典型的功能函數包括integral、quad2d、fzero 和 fminbnd。

例 3.4:計算自然對數從 0 到 5 範圍內的積分

a = 0;

b = 5;

q1 = integral(@log,a,b)

q1 = 3.0472;

③ 函數參數化

(a) 使用嵌套函數參數化

定義參數的一種方法是使用嵌套函數 - 完全包含於程序文件中另一個函數內的函數。

例 3.5

function y = findzero(b,c,x0)

y = fzero(@poly,x0);

% 嵌套函數poly

   function y = poly(x)

   y = x^3 + b*x + c;

   end

end

(b) 使用匿名函數進行參數化

訪問額外參數的另一種方法是使用匿名函數。匿名函數是可以在單個命令中定義而無需創建一個單獨程序文件的函數。這些函數可以使用當前工作區中可用的任何變量。

例 3.6

b = 2;

c = 3.5;

cubicpoly = @(x) x^3 + b*x + c;

x = fzero(cubicpoly,0)

x = -1.0945

例 3.7:使用匿名函數調用在函數文件中定義的更複雜的目標函數

cubicpoly.m文件內容如下:

function y = cubicpoly(x,b,c)

y = x^3 + b*x + c;

end

調用:

b = 2;

c = 3.5;

x = fzero(@(x) cubicpoly(x,b,c),0)

x = -1.0945

相關焦點

  • Matlab--TXT數據的讀取
  • 過冷水帶您走進matlab數據轉換新世界
    數據轉換對於經常使用matlab的夥伴來說是很基礎且實用的知識點,but! 相互之間轉換關係不太容易釐清,免不了書到用時求谷哥度娘。
  • 一文帶你輕鬆搞定matlab各種數據讀寫
    日常在MATLAB編程愛好者討論群中經常有人求助讀取文件的方法,本期過冷水就用最簡潔話語給出圖片、excel、文檔、音頻等類型的文件的讀取和儲存,廢話不多直接看代碼。1、讀取圖片本圖來源於matlab官方twitter圖片的名字是:matlab.jpg;儲存的絕對路徑是:C:\Users\wayne\Desktop讀取&儲存代碼:2、存儲&讀取excel中的數據
  • [優化] 《MATLAB高效編程技巧與應用:25個案例分析》源程序+數據
    《MATLAB高效編程技巧與應用:25個案例分析》源程序+數據 所屬分類:計算機 > 計算機輔助設計與工程計算 > Matlab 內容簡介本書是作者八年matlab使用經驗的總結,精心設計的所有案例均來自於國內各大matlab技術論壇網友的切身需求,其中不少案例涉及的內容和求解方法在國內現已出版的matlab書籍中鮮有介紹
  • 深入淺出MATLAB數據處理之文件讀寫
    參數要和其它函數命令結合才能看出效果,暫時先不不進行演示。過冷水之前的工作中就有判斷文件數據儲存數據順序類型。所以該參數具有較強的實用性。    存儲順序 :存儲順序是指存儲在計算機內存中的地址順序。例如,一個四字節整形數據0x0A0B0C0D,高字節數據(0x0A)存儲在高地址,低字節數據(0x0D)存儲在低地址。 高地址、低地址的概念不能在拓展了,入局太深出不來。閱讀順序 閱讀順序就是人們習慣的看文字的順序。還用「存儲順序」中的4位元組整形數據來說明,0x0A0B0C0D為16進位表示形式,閱讀順序為從左到右(高字節到低字節)。
  • Matlab數據存取(三):注意事項及其他相關問題
    請在matlab中保持當前路徑在該數據文件對應的目錄下進行存取,否則,存取時請給出該數據文件的具體路徑。2. 存取時,請給出該數據文件的全稱(包括後綴名,讀取mat文件時可省略)3. load data.txt和A=load(『data.txt』)的區別請參閱精華貼:[原創]寫給學習matlab 的新手們4.
  • matlab vs R
    R 語言的基本數據類型,可以從上面的內容中看出,最核心、最重要的還是 c() 函數,其次是 data.frame() matlabRx = [1, 3, 5, 9]x = [1;而 R 奠定了以向量為基礎的數據形式。
  • MATLAB基礎:數據類型
    MATLAB中的基礎數據類型主要包括數值類型、字符串、結構、單元數組和函數句柄等數據類型。本文主要介紹這些基礎數據類型及其相關的基礎操作。
  • MATLAB的cell數組
    5 Cell數組元胞數組(cell)是MATLAB的一種特殊數據類型。可以將元胞數組看做一種無所不包的通用矩陣,或者叫做廣義矩陣。組成元胞數組的元素可以是任何一種數據類型的常數或者常量,每一個元素也可以具有不同的尺寸和內存佔用空間,每一個元素的內容也可以完全不同。和一般的數值矩陣一樣,元胞數組的內存空間也是動態分配的。
  • 數據挖掘Matlab零基礎自學學習路線圖
    matlab簡介:MATLAB是美國MathWorks公司出品的商業數學軟體,用於算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環境,主要包括MATLAB和Simulink兩大部分。
  • 【Matlab】繪圖
    反正我們材料剛開始做實驗的時候,同時還在學matlab,對軟體還不熟練,做起來磕磕絆絆的。不過還好第一節實驗課,導師給我們講matlab的一些有關於數據分析的用法(假設)我們看到很多人覺得matlab非常適合數據分析,實際上也確實很多人在用matlab進行數據分析。那我們自己使用matlab進行數據分析並繪圖是個什麼情況呢?
  • 強大的matlab數據科學擬合庫cftool——直接導入數據進行擬合
    對於使用過matlab做數據處理的人來說,擬合是將平面上一系列的點,用一條光滑的曲線連接起來。因為這條曲線有無數種可能,從而有各種擬合方法。擬合的曲線一般可以用函數表示,根據這個函數的不同有不同的擬合名字。
  • 了解一下西門子S7-1200 PLC的複雜數據類型
    對於S7-1200 PLC,除了支持基本數據類型之外,還支持一些複雜的數據類型,包括結構數據類型Struct、PLC數據類型UDT、系統數據類型SDT、硬體數據類型DB_ANY、參數數據類型Variant、String和Char數據類型、WString和WChar數據類型、DTL數據類型等。那麼這篇文章就來給大家介紹一下複雜的數據類型吧。
  • 數據處理:Matlab之向量和數組的基本操作
    一文中,我們對matlab做了簡要介紹。本文來說說matlab 中使用數據的常用形式——向量,也就是一維數組。二維數組就是矩陣了,我們下次再寫。向量 (vector)matlab中的向量分為行向量和列向量兩種。行向量的數據之間用逗號或者空格隔開;列向量的數據之間用分號隔開。
  • python中調用MATLAB程序
    (file_y);         因為導入的mat格式的數據,在python裡面是字典數據類型。因此要先操作字典數據,查看數據格式。        方法1 : 一起輸出每個鍵以及對應的數據值,注意每個鍵都是雙_連用。 因為python導入的mat格式的數據是字典數據格式,需要獲得每個鍵以及它的屬性值。
  • matlab和c語言的區別
    一、MATLAB簡介本文引用地址:http://www.eepw.com.cn/article/201808/388129.htmMATLAB是美國MathWorks公司出品的商業數學軟體,用於算法開發
  • Matlab入門到放棄(一)、matlab基礎知識
    2、設置當前文件夾方法一、cd 要設置的文件夾路徑       方法二、在當前文件夾工具欄或者當前文件夾窗口中選擇某文件為當前文件夾。6、浮點型數據浮點型數據分為單精度和和和雙精度兩種類型,單精度型實數在內存中佔用4個字節,雙精度型實數在內存中佔用8個字節,所以雙精度型的實數的數據精度更高。(數值數據默認是雙精度型)可使用single函數將其他類型的數據轉換為單精度型。使用double函數將其他類型的數據轉換為雙精度型。
  • matlab矩陣及其運算(五)
    感謝大家對matlab愛好者公眾號的關注!如果公眾號文章對您有幫助,別忘了點擊分享和「在看」哦!
  • 關於Matlab的那些事
    當時,在做碩士論文時需要對電泳圖片做微生物種群的多樣性分析和相似性分析,當時手頭的軟體只能將電泳圖轉化為各個泳道的灰度和位置方面的數據,而不能對數據進行分析,而能進行這樣分析的軟體(Bionumerics)比較貴,只為了這個用幾次而買顯然很不划算。
  • Matlab中的基本數據類型介紹
    Matlab中支持的數據類型包括:邏輯(logical)字符(char)數值(numeric)元胞數組(cell)結構體(structure)表格(table)函數句柄(functionhandle)1、邏輯型(logical)該類型變量值為1或0。