如何在矩阵上应用函数并同时传递参数?

时间:2016-07-08 12:42:06

标签: matlab

我有一个矩阵,例如如下:

N = magic(100);

我想在每列上应用一个函数,并将其输出保存在另一个矩阵中。

这是我的功能

function z = nikfoo(y, lambda, p)
 m = length(y);
 D = diff(speye(m), 2);
 w = ones(m, 1);
 for it = 1:10
    W = spdiags(w, 0, m, m);
    C = chol(W + lambda * D' * D);
    z = C \ (C' \ (w .* y));
    w = p * (y > z) + (1 - p) * (y < z);
end

首先,我尝试制作与数据相同大小的矩阵

% I take the size of my matrix
[a, b] = size(N);
% make the same size matrix with zeros
corrNiki = zeros(a,b);

然后我尝试按如下方式进行

% I set the lambda as 1000 and p as 0.1
for i = 1:b
   corrNiki(i) = nikfoo(N(i),1000,0.1);
end

所以现在我有这些问题

  • 如何使用固定的lammda和p传递此函数并将结果保存在corrNiki中?

  • 我怎样才能将不同的值传递给某个范围内的Lamda和一个范围内的P,然后保存它们的输出?

例如,

Lammda 1000和P0.1保存在data1中 Lammda 2000和P0.01保存在data2中 。 。

0 个答案:

没有答案