2011-04-05 49 views
1

SIFT特徵的Matlab實現從http://www.cs.ubc.ca/~lowe/keypoints/找到。在stackoverflow的幫助下。我想將功能保存到.mat文件。特徵是圓形,顏色,二進制圖像中的白色像素數量和篩選特徵。對於我在上面的代碼{[siftImage,descriptors,locs] = sift(filteredImg)}中使用描述符的篩選特徵,我現在的特徵向量是FeaturesTest = [roundness,nWhite,color,descriptors,outputs];使用save('features.mat','Features')將其保存到.mat文件時;它給出了一個錯誤。
錯誤是這樣的。如何使用神經網絡保存篩選特徵向量用於分類

???錯誤使用==> horzcat參數尺寸不是 一致。錯誤在==> user_interface> extract_features at 336 FeaturesTest = [roundness,nWhite, color,descriptors,outputs];

據我所知,我認爲問題是描述符特徵向量大小。它是< 14x128 double>。 14行用於此功能,其他用戶只有一行在.mat文件中。我如何使用其他功能將此特徵向量保存到.mat文件中?

等待回覆。提前致謝。

回答

2

從我能理解,它看起來像你正試圖把變量roundnessnWhitecolordescriptorsoutputs到單一載體中,所有的變量具有獨特的尺寸。

也許最好是使用單元格或結構來存儲數據。爲了將數據存儲在一個細胞,只是改變方括號大括號,就像這樣:

FeaturesTest = {roundness, nWhite, color, descriptors, outputs}; 

然而,這需要你記住哪個細胞,當你拉回來的數據從.MAT文件。爲你的結構可以更爲有用:

FeaturesTest.roundness = roundness; 
FeaturesTest.nWhite = nWhite; 
FeaturesTest.color = color; 
FeaturesTest.descriptors = descriptors; 
FeaturesTest.outputs = outputs; 

然後,當加載.MAT文件,所有的數據將被包含在其結構中,它可以方便地引用。如果您只需要查看顏色變量,您可以輸入FeaturesTest.color,然後按回車,變量就會顯示出來。或者,您可以通過雙擊工作區窗口中的結構來瀏覽結構。

或者,你可以只用save命令,如下所示:

save(filename,roundness, nWhite, color, descriptors, outputs) 

希望這有助於。

+0

非常感謝。您的解決方案運行良好。 – 2011-04-06 03:49:35

+0

我使用上面提到的方法設置了保存的功能。 FeaturesTest = {圓度,nWhite,顏色,描述符,輸出};現在我的第一個4個特徵被輸入到神經網絡,第五個特徵被輸入到目標。我是這樣寫的。 >> load('features.mat','FFeaturesTest'); A = FeaturesTest; P = A(:,1:4)'; T = A(:,5:5)'; >> rand('seed',491218382); >> net = newff(minmax(P),T,20); 現在同樣的錯誤來輸入功能... ???錯誤使用==> horzcat CAT參數維度不一致。 錯誤==> minmax at 38 pr {i} = minmax([p {i,:}]);你有這個想法嗎? – 2011-04-06 05:32:44

+0

使用FeaturesTest.color,它不顯示值。相反,它給這個錯誤?嘗試去引用非結構數組字段。 – 2011-04-06 05:52:38