2013-05-11 53 views
1

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

[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); 

未定义的函数或方法 'iskey' 的类型的输入参数 '双'。

在这一行

tf=iskey(DictionaryMap,ws); 

回答

1

你必须inizialize '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和b = DictionaryMap( '0') - > b = 0