您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關MATLAB中如何實現具有相同字段的結構體數組合并,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
碰到的問題:我使用dir函數分別獲得指定路徑下的jpg,png,bmp圖像文件,如下:
pic_bmp = dir([pName '*.bmp']);
pic_jpg = dir([pName '*.jpg']);
pic_png = dir([pName '*.png']);
(附:關于dir函數:首先它的意思是directory,即獲取當前目錄下的所有文件,利用a= dir(pwd)可以返回當前路徑下的所有文件及文件夾保存到a中,返回的a是一個結構體:a有5個字段,每個字段里面保存了13個Value
K>> a =dir(pwd)
a =
13x1 struct arraywith fields:
name
date
bytes
isdir
datenum
我們想要得到a的name,如果使用names=a.name的話我們的到的只是name里面的最后一個值,因為這樣的返回機制就和函數的返回機制差不多a.name要返回13個值所以這樣就需要13個變量來接收它,這樣就很麻煩了。我們可以使用struct2cell函數把a轉化為一個細胞數組:a = struct2cell(a);新的a是一個5x13的cell它的5行的值分別是上面5個字段包含的值。那么現在要獲得所有的name值就容易了:names= a(1,:);
* 表示通配符,*.jpg表示以jpg為拓展名的所有文件;同理name.*表示名字叫做name的所有文件。)
pic_bmp,pic_jpg,pic_png,這三個結構體變量的所有字段名皆相同我們需要把他們的數據合并該怎么做呢?方法不止一種,最直接的就是allPic = [pic_bmp ; pic_jpg ; pic_png];三者之間用分號連接哦,然后再使用struct2cell轉換為細胞數組:allPic = struct2cell(allPic),再allPicName = allPic(1,:);便獲得了所有的name。那么再說一下其他方法吧:你可以使用3次struct2cell把pic_bmp,pic_jpg,pic_png轉化為cell然后分別取出它們的第一行的name值,再合并再一塊。
關于“MATLAB中如何實現具有相同字段的結構體數組合并”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。