Undefined function 'addElement' for input arguments of type 'cell'.
    6 次查看(过去 30 天)
  
       显示 更早的评论
    
I'm building an app in object oriented programming and I have written a class method who gets all the songs I have stored beforehand and stores them in a bloom filter (and the respective titles in a cell structure aka my hash table). That is my function addElement. My songs are also stored in a cell structure: in the first row, each element is another cell array storing each verse of the song, and the second row stores a cell with the title of the song.
Here's my "data base":
S = importdata('BadLiar.txt','\n');
W = importdata('WhenYou.txt','\n');
songs={S, W;'Bad Liar','When You Look Me in the Eyes'};
When I try to run the addElement method shown below, it says " Undefined function 'addElement' for input arguments of type 'cell' ", even though I have tested it on my command window and it works!
function [bloom, table]=addElement(bloom, table, songs, a,p,b)
            bloom.a=a
            bloom.b=b
            bloom.p=p
            % for each song...
            for i=1:length(songs(1,:))
                % song -> each music
                song=(songs{1,i})
                % foe each verse
                for v=1:length(song)
                    % verso -> a verse
                    verso=(song{v})
                    % for each verse, map it to k positions in my BF
                    hC = mod((a .* sum(double(verso)) + b),p) + 1
                    bloom(hC)=1
                    % populating hashTable
                    title=(songs{2,i});
                    table=addTitle(table,hC,title);
                end
             end
           end
2 个评论
  Jesus Sanchez
      
 2019-12-1
				Could you write how you are calling the function addElement from your main script?
回答(1 个)
  Jesus Sanchez
      
 2019-12-1
        
      编辑:Jesus Sanchez
      
 2019-12-1
  
      Check the value of "verso". If it is not a number, the conversion from cell to double using "double(...)" does not work. This might be the error. Check the example below, where verso{1} is a sentence, and thus matlab throws an error, but verso{4} is a number and it works properly. 
v{1} = {'I love it'};
v{2} = {'When you look me at the eyes'};
v{3} = {'But I am colorblind'};
v{4} = {'4'};
% Your code with a number:
verso = v{4};  % The parenthesis that you put are not necessary. The do not change the result.
double(verso)  % The answer is 4, type double.
verso = v{1};
double(verso)  % The answer is an error "Conversion to double from cell is not possible."
Maybe you want to do something like
strlength(verso)
instead of 
sum(double(verso))
?
0 个评论
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Manage Design Data 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!