Undefined function 'eq' for input arguments of type 'cell error
49 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
sermet
am 13 Mai 2014
Kommentiert: Walter Roberson
am 10 Jun. 2016
txt1=[{'a'},{'b'},{'c'}];
txt1=txt1(:);
data=[{'a'},{'b'}];
data=data(:);
[row,col] = find(txt1==data)
%it gives
Undefined function 'eq' for input arguments of type 'cell'. error.
0 Kommentare
Akzeptierte Antwort
per isakson
am 13 Mai 2014
Bearbeitet: per isakson
am 13 Mai 2014
Replace
txt1==data
by
ismember( txt1, data )
and see documentation of ismember
0 Kommentare
Weitere Antworten (2)
David Sanchez
am 13 Mai 2014
You can also do:
txt1=[{'a'},{'b'},{'c'}];
txt1=txt1(:);
data=[{'a'},{'b'}];
data=data(:);
idx = getnameidx(txt1,data)
idx =
1 2
0 Kommentare
iris jogin
am 10 Jun. 2016
Bearbeitet: Walter Roberson
am 10 Jun. 2016
[mdata,mtext,mraw]=xlsread('o.xlsx');
L=length(mraw);
[D,T,R]=xlsread('Ori.xlsx');
l=length(R);
for i=1:339
A(i)=mraw(i);
end
for j=1: 63314
B(j)=R(j);
end
for i=1:339
for j=1: 63314
if B(j)==A(i)
xlswrite('gotermofO.xlsx',B(j),'A1');
end
end
end
Undefined function 'eq' for input arguments of type 'cell error
1 Kommentar
Walter Roberson
am 10 Jun. 2016
if isequal(B(j), A(i))
This makes no assumptions about the data types: it should work whether the cells are strings or numbers.
Caution: length() is the largest dimension, not the first dimension. Your mraw is generally going to be a 2D array, not a vector.
For efficiency you could be using
A = mraw(1:339);
B = R(1:53314);
Are you sure that you only want a single cell output into the spreadsheet ? Your code overwrites cell A1 each time it finds a match.
Your matching code could be much more efficient if your cells are all numeric or are all strings: in that case you could use ismember(B, A) to do the matching "in bulk"
Siehe auch
Kategorien
Mehr zu File Operations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!