當前位置:首頁 » 密碼管理 » matlab結構體訪問

matlab結構體訪問

發布時間: 2022-06-04 09:45:24

❶ matlab如何讀取結構體中的數據,比如我想利用裡面的數據畫圖

plot(ch11.values)

結構體後面的屬性用a.x就可以得到
a是結構體變數的名字,x是它的域
當然你引用的時候要確保a有x這個域,不然會報錯
例如
ch11.scale
ch11.units
都是可以的
但是
ch11.abc就會出錯了

❷ matlab中的結構體

你賦給一個變數,那個變數就變成結構體了
結構體不能比大小

❸ matlab 中 結構體和單元的區別

1、什麼是單元陣列?
單元陣列又叫cell(元胞)陣列,以前見過「元胞數組」一詞,其實是可以理解成陣列的,比如二維數組,可以理解成2行n列的矩陣或陣列。
2、單元/元胞陣列是如何構成的呢?
我們都熟悉陣列或矩陣的構成,比如一個m*n大小的矩陣,那麼它有m行、n列,共有m*n個元素。如果我們只在實數范圍內考慮,那麼對應的每一個元素就是一個實數,這是一般的實矩陣。單元陣列也可以有m行n列,對應有m*n個元素。所不同的是單元陣列中每個元素是一個cell(元胞),而每個cell可以由不同數據格式的矩陣構成,構成每個cell的矩陣大小也可以不同,可以是一個元素,也可以是一個向量,也可以是一個多維數組。
3、如何創建一個單元陣列?
可使用cell函數創建一個空的單元陣列,具體可參考MATLAB中
help
cell內容。也可以使用大括弧創建,比如我們要創建一個1x3的單元陣列c,則c={A
sum(A)
prod(prod(A))},可以把A設為一個向量,具體各cell數據類型讀者可以用c{1}/c{2}/c{3}讀出來然後使用whos函數自己驗證。其中prod是求積,若A為一個數組(或一維向量),則一個prod後即可求出所有元素之積,第二個prod則還為原結果。若A為一個矩陣,則第一個prod後針對各列求積,結果保留為一個數組,第二個prod則對該數組所有元素再求積,那麼兩個prod的結果即為對矩陣所有元素求積。
4、什麼是結構體及其構成?
結構體可以理解為一種特殊的數據類型。一個結構體有若干結構變數或者域構成。每個結構變數/域類似於一個cell,結構變數可以由不同數據類型的數組構成,比如字元串、整型、浮點數……。此處只是可以借用cell的形式來理解結構變數,但二者絕不等同。
5、如何創建結構體?
可以使用struct函數創建結構體。我們定義結構體為str_array,
則str_array=struct('field1',val1,'field2',val2,……),其中field1、field2為域名,val1、val2為具體值。
6、單元陣列與結構體的不同之處。
結構體(也可稱為結構體陣列)中可以使用域名來訪問數據,而在單元陣列中則使用矩陣的索引操作。

❹ 怎麼樣在MATLAB中讀取結構體中的數據

簡單,使用fieldnames()函數查看有哪些成員,使用getfield()函數查看成員數據,比如:
>> a.x1 = 123;
>> a.x2 = 'a string';
>> a.x3 = [1,2,3,4,5];

>> fieldnames(a) % 返回成員名稱列表
ans =
'x1'
'x2'
'x3'
>> getfield(a,'x1') % 查看某一成員的值
ans =
123

❺ MATLAB如何提取結構體中數據

1. 結構數組的創建
MATLAB提供了兩種定義結構的方式:直接應用和使用struct函數。
a) 使用直接引用方式定義結構
與建立數值型數組一樣,建立新struct對象不需要事先申明,可以直接引用,而且可以動態擴充。比如建立一個復數變數x:

x.real = 0; % 創建欄位名為real,並為該欄位賦值為0
x.imag = 0 % 為x創建一個新的欄位imag,並為該欄位賦值為0
x =
real: 0
imag: 0

然後可以將其動態擴充為數組:

x(2).real = 0; % 將x擴充為1×2的結構數組
x(2).imag = 0;

在任何需要的時候,也可以為數組動態擴充欄位,如增加欄位scale:

x(1).scale = 0;

這樣,所有x都增加了一個scale欄位,而x(1)之外的其他變數的scale欄位為空:

x(1) % 查看結構數組的第一個元素的各個欄位的內容
ans =
real: 0
imag: 0
scale: 0

x(2) % 查看結構數組的第二個元素的各個欄位的內容,注意沒有賦值的欄位為空
ans =
real: 0
imag: 0
scale: []

應該注意的是,x的real、imag、scale欄位不一定是單個數據元素,它們可以是任意數據類型,可以是向量、數組、矩陣甚至是其他結構變數或元胞數組,而且不同欄位之間其數據類型不需要相同。例如:

clear x; x.real = [1 2 3 4 5]; x.imag = ones(10,10);

數組中不同元素的同一欄位的數據類型也不要求一樣:

x(2).real = '123';
x(2).imag = rand(5,1);

甚至還可以通過引用數組欄位來定義結構數據類型的某欄位:

x(3).real = x(1); x(3).imag = 3;
x(3)
ans =
real: [1x1 struct]
imag: 3

b) 使用struct函數創建結構
使用struct函數也可以創建結構,該函數產生或把其他形式的數據轉換為結構數組。
struct的使用格式為:

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

該函數將生成一個具有指定欄位名和相應數據的結構數組,其包含的數據values1、values2等必須為具有相同維數的數據,數據的存放位置與其他結構位置一一對應的。

對於struct的賦值用到了元胞數組。數組values1、values2等可以是元胞數組、標量元胞單元或者單個數值。每個values的數據被賦值給相應的field欄位。
當valuesX為元胞數組的時候,生成的結構數組的維數與元胞數組的維數相同。而在數據中不包含元胞的時候,得到的結構數組的維數是1×1的。例如:

s = struct('type',{'big','little'},'color',{'blue','red'},'x',{3,4})
s =
1x2 struct array with fields:
type
color
x

得到維數為1×2的結構數組s,包含了type、color和x共3個欄位。這是因為在struct函數中{'big','little'}、{'blue','red'}和{3,4}都是1×2的元胞數組,可以看到兩個數據成分分別為:

s(1,1)
ans =
type: 'big'
color: 'blue'
x: 3
s(1,2)
ans =
type: 'little'
color: 'red'
x: 4

相應的,如果將struct函數寫成下面的形式:

s = struct('type',{'big';'little'},'color',{'blue';'red'},'x',{3;4})
s =
2x1 struct array with fields:
type
color
x

則會得到一個2×1的結構數組。

2. 結構數組的操作
MATLAB中專門用於對結構數組的操作的函數並不多,通過help datatypes獲取數據類型列表,可以看到其中的結構數據類型的有關的函數。

結構數組的操作函數

deal把輸入處理成輸出
Fieldnames獲取結構的欄位名

getfield獲取結構中指定欄位的值
Rmfield刪除結構的欄位(不是欄位內容)

setfield設置結構數組中指定的欄位的值
Struct創建結構數組

struct2cell結構數組轉化成元胞數組
Isfield判斷是否存在該欄位

isstruct判斷某變數是否是結構類型

❻ 關於matlab結構體訪問()和{}的區別問題

這里涉及到單元陣列的索引方式
單元陣列的表示有兩種方式,一種是內容索引,一種是單元索引。
內容索引要用到大括弧{},還有他們的下標,例如樓主的N{1,2}屬於內容索引。
內容索引的這種類型定義了包含在一個單元中的數據結構的內容。
單元索引則是把存儲於單元中的數據用大括弧括起來,單元的下標用普通下標標記法。例如N(1,2)。
單元索引的這種類型創建了包含有指定值的一個數據結構,並把這個數據結構賦於一個單元。
他們的區別在於你直接定義並給單元陣列賦值時的形式,比如:
內容索引:
N{1,1}=[1 2 ;4 5];
N{1,2} = 'Name';
N{2,1} = 2-4i;
N{2,2} = 7;
對應的單元索引形式:
N(1,1)={[1 2;4 5]};
N(1,2)={'Name'};
N(2,1)={2-4i};
N(2,2)={7};
關於樓主的第二個問題:
因為cc=N(1,2)是單元索引形式,所以cc是一個單元類型,其所佔內存空間不僅要存入數據的數值,還要指定數據的數據類型,而且單元陣列不像矩陣或者數組在MATLAB中有特定的存儲結構,這就是導致cc佔用空間這么大的原因,至於68Bytes怎麼得來的,這個確實不知道。
期待有MATLAB大師來解答。
期待樓主加分哦,很努力了,O(∩_∩)O~

❼ matlab中怎麼定義結構體

1.
使用直接引用方式定義結構
與建立數值型數組一樣,建立新struct對象不需要事先申明,可以直接引用,而且可以動態擴充。比如建立一個復數變數x:
x.real
=
0;
%
創建欄位名為real,並為該欄位賦值為0
x.imag
=
0
%
為x創建一個新的欄位imag,並為該欄位賦值為0
x
=
real:
0
imag:
0
2.
使用struct函數創建結構
使用struct函數也可以創建結構,該函數產生或吧其他形式的數據轉換為結構數組。
struct的使用格式為:
s
=
sturct('field1',values1,'field2',values2,…);

熱點內容
我的世界龍蛋伺服器 發布:2025-05-17 06:20:06 瀏覽:912
安卓系統軟體怎麼不更新 發布:2025-05-17 06:19:15 瀏覽:817
安卓夏日傳說存檔放哪個文件 發布:2025-05-17 06:12:44 瀏覽:606
如何通過伺服器id找到主人 發布:2025-05-17 06:12:11 瀏覽:37
ug編程吧 發布:2025-05-17 06:07:45 瀏覽:72
sql臨時表和表變數 發布:2025-05-17 06:02:38 瀏覽:724
蘋果如何用安卓無線耳機 發布:2025-05-17 06:01:53 瀏覽:822
sqlserver表關系 發布:2025-05-17 06:01:02 瀏覽:997
2017途觀配置什麼音響 發布:2025-05-17 05:53:50 瀏覽:844
64位安裝sql2000 發布:2025-05-17 05:33:17 瀏覽:846