我有兴趣将一些矩阵元素编写为可以根据我的方便获取值的函数,然后可以应用所需的矩阵运算。更确切地说,我试图整合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})
答案 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