Matlab 对每个矩阵值执行函数

Matlab 对每个矩阵值执行函数,matlab,matrix,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,换句话说,为什么所有的指数都取决于第一个计算的和 输出如

我目前正在试验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

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
g=2:13
,这导致
k=1:2
(如上所述)

最后
sum(1:2)=3


这个值应用于
p(1:12)
,这与
p(:,:)
(所有矩阵)

相同,您正在为
p
矩阵中的所有元素分配一个标量(您的
getSum
函数的输出)。您想计算什么?你有一个4x4,索引为k(1:100),看起来。您想求和什么?这只是一个示例,用于说明将参数传递给函数的问题,主要目的是为任意数组编制索引。我的主要目标不是执行求和,而是找到一种合适的方法,根据函数参数对数组进行索引,然后将相应的结果(每次索引后获得的结果,在本例中为求和)应用于每个矩阵单元。感谢您的解释。但是,有没有其他方法可以计算类似这样的问题(即将参数传递给依赖于将用于索引的当前矩阵位置的函数)?请注意,为了说明向用于索引的函数传递参数的概念,这是一个简单的例子。@Bran也许,您要寻找的是
arrayfun
@CapeCode arrayfun()是实现这一点的一种方法,但不幸的是,它在每次函数调用期间都会带来开销。我正在寻找另一种方法,通过矩阵操作/索引来加速修改每个单元格的过程…@Bran你能告诉我们你打算执行的实际操作吗?