作者LSgay5566 (丽萱小妹)
看板MATLAB
标题[讨论] Cell中每个资料矩阵的非零值求法
时间Sat Jan 14 14:55:09 2017
大家好~
想请问一个问题,我最近因为资料处理的关系,先把都是同样大小的矩阵存在cell中
接着要判断每一个cell中的矩阵数值为何并且相加计算方均根
我的code如下
for i = 1:100
I{i} = graypic_imadjust(row,cow) ;
every_I(i) = sqrt(mean(find(I{i}).^2)) ;
end
但是算出来的数值都非常奇怪,回去看我的变数发现是find(I{i})这里出问题了
假设我的I{1}= 1 23 0 0 0 0 0
12 0 0 23 0 0 0
2 9 1 0 0 0 1
原本预期find(I{1})出来要是1 23 12 23 2 9 1 1
但是出来的数字却不对
想问问看是哪里出错了,拜托各位了><
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.164.131.223
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1484376912.A.580.html
※ 编辑: LSgay5566 (1.164.131.223), 01/14/2017 15:00:31
※ 编辑: LSgay5566 (1.164.131.223), 01/14/2017 15:02:19
1F:推 sunev: find给出来的是位置,不是值 01/14 17:19
2F:→ LSgay5566: 哦哦哦好的~那想请问有什麽办法求非零值呢>< 01/14 21:21
3F:→ mp19990920: cell内所有东东都做相同事情请把回圈去掉改用cellfun 01/14 23:14
4F:→ mp19990920: 你预计要的find(I{i})是I{i}(I{i}~=0) 01/14 23:16
5F:→ mp19990920: 所以程式如下所示: 01/14 23:22
6F:→ mp19990920: f = @(x) sqrt(mean( x(x~=0) )); 01/14 23:22
7F:→ mp19990920: every_I = cellfun(@f, I); 01/14 23:23
8F:→ mp19990920: 更正,是 every_I = cellfun(f, I); 01/14 23:24
9F:→ mp19990920: 或是 cellfun(@(x) sqrt(mean( x(x~=0) )), I); 01/14 23:26