這篇文章將為大家詳細(xì)講解有關(guān)MATLAB中如何實(shí)現(xiàn)具有相同字段的結(jié)構(gòu)體數(shù)組合并,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供保山網(wǎng)站建設(shè)、保山做網(wǎng)站、保山網(wǎng)站設(shè)計(jì)、保山網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、保山企業(yè)網(wǎng)站模板建站服務(wù),十載保山做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
碰到的問題:我使用dir函數(shù)分別獲得指定路徑下的jpg,png,bmp圖像文件,如下:
pic_bmp = dir([pName '*.bmp']);
pic_jpg = dir([pName '*.jpg']);
pic_png = dir([pName '*.png']);
(附:關(guān)于dir函數(shù):首先它的意思是directory,即獲取當(dāng)前目錄下的所有文件,利用a= dir(pwd)可以返回當(dāng)前路徑下的所有文件及文件夾保存到a中,返回的a是一個(gè)結(jié)構(gòu)體:a有5個(gè)字段,每個(gè)字段里面保存了13個(gè)Value
K>> a =dir(pwd)
a =
13x1 struct arraywith fields:
name
date
bytes
isdir
datenum
我們想要得到a的name,如果使用names=a.name的話我們的到的只是name里面的最后一個(gè)值,因?yàn)檫@樣的返回機(jī)制就和函數(shù)的返回機(jī)制差不多a.name要返回13個(gè)值所以這樣就需要13個(gè)變量來接收它,這樣就很麻煩了。我們可以使用struct2cell函數(shù)把a(bǔ)轉(zhuǎn)化為一個(gè)細(xì)胞數(shù)組:a = struct2cell(a);新的a是一個(gè)5x13的cell它的5行的值分別是上面5個(gè)字段包含的值。那么現(xiàn)在要獲得所有的name值就容易了:names= a(1,:);
* 表示通配符,*.jpg表示以jpg為拓展名的所有文件;同理name.*表示名字叫做name的所有文件。)
pic_bmp,pic_jpg,pic_png,這三個(gè)結(jié)構(gòu)體變量的所有字段名皆相同我們需要把他們的數(shù)據(jù)合并該怎么做呢?方法不止一種,最直接的就是allPic = [pic_bmp ; pic_jpg ; pic_png];三者之間用分號連接哦,然后再使用struct2cell轉(zhuǎn)換為細(xì)胞數(shù)組:allPic = struct2cell(allPic),再allPicName = allPic(1,:);便獲得了所有的name。那么再說一下其他方法吧:你可以使用3次struct2cell把pic_bmp,pic_jpg,pic_png轉(zhuǎn)化為cell然后分別取出它們的第一行的name值,再合并再一塊。
關(guān)于“MATLAB中如何實(shí)現(xiàn)具有相同字段的結(jié)構(gòu)體數(shù)組合并”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。