2

タイトルが示すように、フィールド名 (http://www.mathworks.co.uk/help/matlab/ref/fieldnames.html) として機能する関数があるかどうか疑問に思っているだけですが、セルに対しては機能します。

したがって、次のようなものがある場合:

a = imread('redsquare.bmp');
b = imread('bluesquare.bmp');
c = imread('yellowsquare.bmp');
d = imread('greysquare.bmp');

e = {a, b, c, d};

a、b、c、d、または拡張子のない画像名のいずれかを取得しようとしています。

fn = fileparts(e)とを試しfntemp = cell2struct(e,2)ましたが、動作しません。

これが理にかなっていることを願っていますありがとう

4

1 に答える 1

4

cell 配列には、フィールド名やファイル名などのメタ情報は含まれません。その情報にアクセスしたい場合は、データ ストレージ構造を変更する必要があります。いくつかのオプションは次のとおりです。

スカラー構造 参照する名前が 1 つしかない場合に適しています。

images.red = imread('redsquare.bmp');
images.blue = imread('bluesquare.bmp');

名前を取得するために使用fieldnames(images)します。

構造体の配列 もう少し一般的です。完全に一般的な名前 (特殊文字とスペースを含む) と、必要に応じて追加のメタデータ (「サイズ」、「作成者」など) を許可します。

images(1).name = 'red';
images(1).im   = imread('redsquare.bmp');
images(2).name = 'blue';
images(3).im   = imread('bluesquare.bmp');

名前だけを取得するために使用{fieldnames.name}します。

Containers.map おそらくここで必要とする以上のものですが、知っておくとよいでしょう。 help comtainers.map多くのための。

于 2013-01-02T22:37:01.260 に答える