我目前正在尝试使用Matlab函数。基本上我试图对矩阵中找到的每个值执行一个函数,如下面的简单示例:
k = [1:100];
p = [45 60 98 100; 46 65 98 20; 47 65 96 50];
p(find(p)) = getSum(k, find(p), find(p) + 1);
function x = getSum(k, f, g, h)
x = sum(k(f:g));
end
为什么相应的输出矩阵值都是3,换句话说为什么所有索引都取决于第一个计算的总和?
输出如下:
p =
3 3 3 3
3 3 3 3
3 3 3 3
答案 0 :(得分:2)
f:g
返回f(1,1)
和g(1,1)
之间的值,因此1:2
。
find(p)
返回非零值的索引。由于所有值都不为零,因此您将获得所有索引。
因此,如果我们细分语句p(find(p)) = getSum(k, find(p), fin(p) + 1)
我们得到了
find(p) = 1:12
然后我们得到
导致f = 1:12
的{{1}}和g = 2:13
(如上所述)
最后k = 1:2
此值适用于sum(1:2) = 3
,与p(1:12)
(所有矩阵)相同