1

我在matlab中编写了这段代码来获取图像并将其转换为整数向量这些数字我把它放在字典中映射键值我希望它是从0到255的数字字符串。因此,我转换数字到一个字符串并将其作为字典的键为什么我在下面有这两个错误以及如何解决它

[filename pathname] = uigetfile({'*.tiff';'*.bmp'},'File Selector');

image=strcat(pathname,filename);
pic=imread(image);
Imgvector=pic(:);
c=256;

for j=0:255
    d=int2str(j);
    DictionaryMap(d)=j;
end

keyset=keys(DictionaryMap);
disp(keyset);
ws=Imgvector(1);

for i=2:length(Imgvector)
    w=Imgvector(i);
    w=int2str(w);
    ws=strcat(ws,w);
    tf=iskey(DictionaryMap,ws);
    if tf==1
    elseif tf==0
        c=c+1;
        ms=ws;
        DictionaryMap(ms)=c;
        ws=str(2:end);
    end
end

我得到了这两个错误:

“double”类型的输入参数的未定义函数或方法“键”。

在这一行:

keyset=keys(DictionaryMap);

“double”类型的输入参数的未定义函数或方法“iskey”。

在这一行

tf=iskey(DictionaryMap,ws);
4

1 回答 1

1

您必须将“DictionaryMap”初始化为容器,例如http://www.mathworks.it/it/help/matlab/ref/containers.map.iskey.html

months =   {'Jan', 'Feb', 'Mar', 'Apr'};
rainfall = [327.2, 368.2, 197.6, 178.4];
mapObj = containers.Map(months,rainfall);

你可以修改

for j=0:255
    d=int2str(j);
    DictionaryMap(d)=j;
end

使用以下代码:

d = cell(c, 1);
x = [0:255];
for j=1:c
    d{j}=int2str(x(j));
end
DictionaryMap = containers.Map(d,x);

之后,如果您使用字符串寻址容器,您可以获得以下结果: b=DictionaryMap('255') --> b = 255 and b=DictionaryMap('0') --> b = 0

于 2013-05-12T14:33:42.627 回答