Matlab 对每个矩阵值执行函数
我目前正在试验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,换句话说,为什么所有的指数都取决于第一个计算的和 输出如
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你能告诉我们你打算执行的实际操作吗?