wuygoon 发表于 2009-2-3 12:22

查找元胞矩阵中特定矩阵的算法求助!

请问各位,我想找出元胞矩阵中某一列里的特定矩阵,这句代码应该怎么改呢?O(∩_∩)O谢谢~~~~~













find(cellArray{:,1}==);

rocwoods 发表于 2009-2-3 22:10

= find(cellfun(@(x) isequal(x,),cellArray));

ChaChing 发表于 2009-2-3 23:34

试了! v6.5会报错! 火大刚搅个2006a!
但试了怎麽都是Empty matrix!
累了! 明早再试!

wuygoon 发表于 2009-2-4 00:31

非常感谢楼上两位的帮忙,二楼的方法的确可以实现整个元胞矩阵中的查找,返回行列坐标,但是我尝试了一下却没有办法实现某一列或某一行中的查找,还请帮忙解答,O(∩_∩)O谢谢~~~~
然后,由于我Matlab的学识有限,二楼的代码的实现原理我并不是很理解,还请解释一下,谢谢了~~~

ChaChing 发表于 2009-2-4 10:59

不好意思! 个人几十年来一直使用旧版(v5.6), 新版功能一直未学习, 真汗颜!
二楼的方法个人还未试成功, 仅提供一笨方法共参考!
aa={ ; ; ; ; ; ; ; ; ; };
=size(aa); row=[]; col=[];
for i=1:m, for j=1:n,
   if isequal( cell2mat(aa(i,j)), ), row=; col=; end;
end; end


[ 本帖最后由 ChaChing 于 2009-2-4 11:00 编辑 ]

rocwoods 发表于 2009-2-4 18:10

比如你想找元胞矩阵cellArray第一列等于矩阵的索引,如下方法即可 = find(cellfun(@(x) isequal(x,),cellArray(:,1)));主要就是cellfun函数的使用,第一个输入参量是函数句柄H,第二个参量是元胞C。整个函数的意思是将H代表的函数作用于C的每个元素,返回一个和C维数一样的数组D,D的每个元素就是函数H作用于C相应位置上元素后的结果。
譬如C是m*n的元胞矩阵,D = cellfun(H,C)功能上等价于如下代码:
D = zeros(m,n);
for i = 1:m
for j = 1:n
D(i,j) = H(C{i,j});
end
end
具体可以查阅cellfun的函数帮助文档。v7以后的版本都有。

[ 本帖最后由 rocwoods 于 2009-2-4 18:12 编辑 ]

ChaChing 发表于 2009-2-4 23:42

回复 6楼 rocwoods 的帖子

患了一个严重的错误(cell输入), 所以二楼的方法没试成功!
现OK了! 谢谢大牛的回覆!

[ 本帖最后由 ChaChing 于 2009-2-6 08:10 编辑 ]

wuygoon 发表于 2009-2-6 02:14

(⊙o⊙)哦~~~~明白了,谢谢两位的帮忙了!!!!
页: [1]
查看完整版本: 查找元胞矩阵中特定矩阵的算法求助!