我使用两个单元格来存储matlab中神经网络过程的目标值和期望值。我使用了两个1 * 1单元阵列来分别存储值。这是我的代码。
cinfo=cell(1,2)
cinfo(1,1)=iter(1,10)%value is retrieved from a dataset iter
cinfo(1,2)=iter(1,11)
amp1=cinfo(1,1);
amp2=cinfo(1,2);
if amp1 == amp2
message=sprintf('NOT DETECTED BY THE DISEASE');
uiwait(msgbox(message));
但是当我运行上面的代码时,会收到以下错误:
??? Undefined function or method 'eq' for input arguments of type 'cell'.
Error in ==> comparison at line 38
if amp1 == amp2
如何解决这个问题?
答案 0 :(得分:0)
问题在于你如何编制索引。 1x1单元格数组没有多大意义,而是通过使用大括号进行索引来获取单个单元格中的实际元素:
amp1=cinfo{1,1}; # get the actual element from the cell array, and not just a
amp2=cinfo{1,2}; # 1x1 cell array by indexing with {}
if (amp1 == amp2)
## etc...
但请注意,如果amp1
和amp2
不是标量,则上述行为会很奇怪。相反,做
if (all (amp1 == amp2))
## etc...
答案 1 :(得分:0)
使用isequal
。即使单元格的内容具有不同的大小,这也会有效。
示例:
cinfo=cell(1,2);
cinfo(1,1) = {1:10}; %// store vector of 10 numbers in cell 1
cinfo(1,2) = {1:20}; %// store vector of 20 numbers in cell 2
amp1 = cinfo(1,1); %// single cell containing a length-10 numeric vector
amp2 = cinfo(1,2); %// single cell containing a length-20 numeric vector
if isequal(amp1,amp2)
%// ...
在这个与您的代码平行的示例中,amp1
和amp2
是由包含数字向量的单个单元格组成的单元格数组。另一种可能性是将每个单元格的内容直接存储到amp1
,amp2
,然后进行比较:
amp1 = cinfo{1,1}; %// length-10 numeric vector
amp2 = cinfo{1,2}; %// length-20 numeric vector
if isequal(amp1,amp2)
%// ...
请注意,即使在这种情况下,比较amp1==amp1
或all(amp1==amp2)
也会产生错误,因为矢量的大小不同。