關於Matlab元胞結構體的賦值問題

2021-08-09 22:26:46 字數 987 閱讀 5130

此文僅將在matlab除錯過程中發現的乙個易忽略的問題作乙個記錄。程式設計如下讀取結構體target中的資料,target結構體如下所示:

**如下:

tr_ind=find(img.images.set==1);

te_ind=find(img.images.set==3);

train.feature=target.feature;

train.mask=target.mask;

train.size=target.size;

test.feature=target.feature;

test.mask=target.mask;

test.size=target.size;

如此**,在train與test中只賦值了target各域中的乙個元素,將上述**中的{}改為()後,成功讀取tr_ind和te_ind索引對應的所有內容,如下**:

tr_ind=find(img.images.set==1);

te_ind=find(img.images.set==3);

train.feature=target.feature(tr_ind);

train.mask=target.mask(tr_ind);

train.size=target.size(tr_ind);

test.feature=target.feature(te_ind);

test.mask=target.mask(te_ind);

test.size=target.size(te_ind);

當然,這也涉及到()與讀取元胞還是元胞內容的區別,但是易被忽略。

參考:

1. 關於matlab下的cell元胞與struct結構體

Matlab中的元胞陣列

元胞陣列 cell array 將型別不同的相關資料整合到乙個單一的變數中,使得大量相關資料的引用和處理變得簡單方便。也就是說cell元胞陣列,儲存不同型別的資料。建立方法有3種 直接賦值法 利用函式cell 利用直接建立元胞陣列的所有單元。通過賦值語句把值賦到元胞陣列的乙個單元中,但每一次賦值只能...

元胞陣列索引 MATLAB的cell陣列

5 cell陣列 元胞陣列 cell 是matlab的一種特殊資料型別。可以將元胞陣列看做一種無所不包的通用矩陣,或者叫做廣義矩陣。組成元胞陣列的元素可以是任何一種資料型別的常數或者常量,每乙個元素也可以具有不同的尺寸和記憶體占用空間,每乙個元素的內容也可以完全不同。和一般的數值矩陣一樣,元胞陣列的...

如何使用matlab中的胞元陣列

胞元陣列 cell arry 的基本組分是胞元 cell 每個胞元本身在陣列中是平等的,只能以下標區分。胞元可以存放任何型別 任何大小的陣列,如任意維數值陣列 字串陣列 符號物件等,而且同乙個胞元陣列中各胞元中的內容可以不同。與數值陣列一樣,胞元陣列維數不受限制,可以一維 二維或更高維,不過一維胞元...