【问题标题】:matlab: sum of f(k_i,x) where k_i are scalars and x is a matrixmatlab:f(k_i,x) 的总和,其中 k_i 是标量,x 是矩阵
【发布时间】:2014-10-19 22:42:58
【问题描述】:

除了使用循环之外,知道如何计算这个总和吗?

sum(i) f(k(i),x) 其中 k_i 是向量的一些条目,x 是矩阵。

目前我正在做的是这个,但我宁愿有一个通用的解决方案:

for ii=1:length(k)
psi=psi+f(k(ii),x)
end

如果有任何问题:

f(k,x)=g(k)*exp(k*x)

【问题讨论】:

  • fg 的定义完全不同。如果他们可以对向量进行操作。 g 是什么?数组还是函数?
  • 对不起,x是一个矩阵。 g(k) 可以接受向量输入。
  • 你能添加一个输入和预期输出的例子吗?
  • 当然,这是一个具体的例子x=linspace(-5,5,300); [xx,yy]=meshgrid(x,x); k=linspace(-10,10,400); psi=zeros(size(xx)); for ii=1:length(k) psi=psi+exp(-k(ii)^2/4)*exp(1i*k(ii)*xx); end imagesc(abs(psi))
  • 你的问题case不清楚,你最好添加简单的matlab代码让我们看看这些变量是如何定义和构造的。

标签: matlab vector matrix-multiplication


【解决方案1】:

假设g 可以接受向量输入并返回相同大小的向量结果,而x 只是一个标量

f=@(k,x) g(k).*exp(k*x);
psi=sum(f(k,x))

或者如果g不能或不能接受向量输入,你可以这样做

g=@(k) arrayfun(g,k);

然后像以前一样定义f

【讨论】:

  • 谢谢,但这里的问题是,因为 x 是一个矩阵,所以总和不是矩阵 f(k1,x)+f(k2,x)+.... 的总和,而是一些总和用向量 k 加权的列数。
【解决方案2】:

您的意思是您只想对特定行求和吗? 如果是这样,这将做到:

a= [1 2 3 4;
    5 2 7 2;
    0 0 2 3];

k= [1 3]; %rows selection for sum

result= sum(a(k,:))

【讨论】:

  • 不完全,我想对矩阵求和(例如) k(1)^2*exp(k(1)*a)+k(2)^2*exp(k(2 )*a)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
  • 2019-09-22
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
相关资源
最近更新 更多