对每个矩阵值执行一个函数

时间:2014-11-03 19:43:27

标签: matlab matrix

我目前正在尝试使用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

1 个答案:

答案 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)(所有矩阵)相同