由于我要用eig函数,所以以前数据结构中cell的每个元素是1X9的矩阵,必须reshape成3X3的矩阵,然后使用cellfun就安逸了。 使用for循环,肯定可以。但是由于数据很多,大概10w+个,效率很低。不知道cellfun能支持reshape函数么? 有经验的大大,求助啊! 现在的解决方案是: for i=1:ngp gp_C_cell{i,1} = reshape(gp_C_cell{i,1},3,3)'; end |
最佳答案
11 条回复
本帖最后由 winner245 于 2013-10-3 09:55 编辑 你的意思是你有很多这样的cell 都需要 reshape成3*3? |
你这里直接用for也不见得慢(甚至比cellfun),至少我这里测试下来如此 cellfun很多时候只是循环的一种简写方法 另外如果你只计算3*3的特征值应该会有比eig更迅速的方法,毕竟这只是一个很小的矩阵,而且这种方法可能允许你把cell转换成3维矩阵后向量化计算 具体的算法可能需要你自己去查找 不过优化之前要衡量是否值得,如果你只做一次这个运算,或者每次都只要同样的结果(可以把结果保存起来),那么优化这个代码的时间可能比节省的时间要多得多,是否愿意付出这样的代价就要自行斟酌了 |
Powered by Discuz! X3.4
© 2001-2022