【问题标题】:How to write functions as matrix elements inside MATLAB matrices?如何将函数编写为 MATLAB 矩阵中的矩阵元素?
【发布时间】:2015-12-12 03:08:39
【问题描述】:

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

【问题讨论】:

  • 写下你现在拥有的代码,否则很难想象你到底想做什么?
  • 你能给我们看一些代码吗?很难想象你在问什么。
  • 您只是重复相同的函数矩阵,但即使生成正确的函数,它也需要 2 个输入(sigmarho),因此无法为 sigma @987654324 定义积分@。或者你打算修复rho

标签: matlab function matrix


【解决方案1】:

我认为您无法使用函数句柄来实现这一点。我认为最好的方法是定义如下函数:

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

【讨论】:

  • 嗨蒂姆,谢谢;实际上,我没有像您所做的那样评估要存储在矩阵元素中的任何函数。我想将其他一些变量 x 本身的函数存储为矩阵元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多