如何在MATLAB矩阵中编写函数作为矩阵元素?

时间:2015-12-12 03:08:40

标签: matlab function matrix

我有兴趣将一些矩阵元素编写为可以根据我的方便获取值的函数,然后可以应用所需的矩阵运算。更确切地说,我试图整合x,矩阵的轨迹,矩阵元素作为x的函数(当它们通过依赖于x的矩阵的乘积时,它们是分析未知的)。

当我尝试将矩阵元素写为函数时,我显然得到了错误 - 无法从function_handle转换为double。有没有一种简单的方法将矩阵元素写为函数?

感谢。请问我的问题是否不明确。

例如,它是这样的: -

N_k = 10; 
M_sigma = cell(N_k,1);
M_rho = cell(N_k,1);

for ii = 1:N_k
    M_sigma {ii}(1,2) = @(sigma) sigma; %this kind of thing is not allowed in matlab
    M_sigma {ii}(2,1) = @(sigma) -conj(sigma);
    M_sigma {ii}(1,1) = 0;
    M_sigma {ii}(2,2) = 0;
end

for ii = 1:N_k
    M_rho {ii}(1,2) = @(rho) rho; 
    M_rho {ii}(2,1) = @(rho) -conj(rho);
    M_rho {ii}(1,1) = 0;
    M_rho {ii}(2,2) = 0;
end



M_tau = cell(N_k,1);

for ii = 1:N_k
    M_tau {ii} = exp(M_sigma{ii})*exp(M_rho{ii}); 
end


    % the following statement is wrong but I want to do something like 
    %:-write M_tau as a function of sigma and sum(integrate) the trace of M_tau for all values of sigma

integral(@(sigma) M_tau{1}(sigma), {0,1})

1 个答案:

答案 0 :(得分:0)

我认为你不能用功能句柄来完成它。我认为你能做到的最好的方法是定义一个函数如下:

function x = myFunction(rowindex,colindex)
     x = x * rowindex + colindex;
end

您可以用您的算法替换此函数,然后您可以执行以下操作迭代它:

for a=1:10
   for b=1:10
      x(a,b)=myFunction(a,b);
   end
end