【问题标题】:Calculating integral in MATLAB在 MATLAB 中计算积分
【发布时间】:2021-06-20 14:20:23
【问题描述】:

如何计算屏幕截图所示的积分, 其中j11x3 矩阵,j2 也是1x3 矩阵, 而g1300x3 矩阵,g2 也是300x3 矩阵。

在屏幕截图中,'.'表示点积。

实际上 g1 和 g2 是 300x4 矩阵,其中第一行是 't'。第一行有 t = 200,第二行有 300,依此类推,直到第 300 行有 60000 值。 因此,g1 和 g2 实际上依赖于 't'。 如果我们把它作为总和,那么这是否正确?

Alpha_gyro = 0;
for i = 1:300

Alpha_gyro_function =(dot(g1(1,2:4),j1) - dot(g2(i,2:4),j2));
Alpha_gyro = Alpha_gyro + Alpha_gyro_function;


end 

因此,它将输出作为 1 个数字。但现在我很困惑 'Alpha_gyro(t)' 相对于 't' 的值是多少。即,“Alpha_gyro”也应该是 300x1 的矩阵,对吧?因为它依赖于't' 为此目的,这是否正确?

Alpha_gyro = zeros(300,1)
for i = 1:300
Alpha_gyro_function =(dot(g1(1,2:4),j1) - dot(g2(i,2:4),j2));
Alpha_gyro(i) = Alpha_gyro(i) + Alpha_gyro_function;

end

但是,正如我们所知,积分的值从 0 到“t”的新值,因此每个值应该是新矩阵中先前值的总和。 那么我添加了这个,如果我做得对,你能指导一下吗?

Alpha_gyro = zeros(300,1);Alpha_gyro_function_old =0 ;
for i = 1:300
Alpha_gyro_function =(dot(g1(1,2:4),G_upd_j1) - dot(g2(i,2:4),G_upd_j2));
Alpha_gyro_function_old = Alpha_gyro_function_old + Alpha_gyro_function;
Alpha_gyro(i) = Alpha_gyro(i) + Alpha_gyro_function_old;
end

【问题讨论】:

  • 我猜 j1 和 j2 的大小必须是 3x1?并且需要计算数值积分?
  • 欢迎来到 SO!它通常在这里工作的方式是你展示你尝试过的东西(发布一些代码)并说出什么不起作用。如果你不付出努力,这不是你做作业的地方。见How to Ask
  • 感谢@Justin 的回复,我已经更新了问题,
  • 感谢@geoinformatic 的回复我已经更新了你现在建议什么?

标签: matlab integration calculus


【解决方案1】:

这是我的解决方案(如果我理解正确你的任务):

t = g1(:,1); % time values
integrand = g1(:,2:4)*j1' - g2(:,2:4)*j2'; % symbol " ' " mean transpose
 
alfa_gyro = [];

for i = 2:length(t)
alfa_gyro(i) = trapz(t(1:i), integrand(1:i));
end

result = [t, alfa_gyro'];

【讨论】:

  • 如果他们解释解决方案而不是仅仅给出代码,答案会更好。
  • 我提供的代码非常简单易懂。使用了原始变量名称。如果@Izhar Ulhaq 需要一些额外的解释,那么我会提供。 *** 2 位版主 - 我没有看到任何原因编辑了我的帖子。
  • 我删除了第一句话,因为它与答案无关。 Stack Overflow 是一个精心策划的问题和答案集合,旨在造福于数以百万计正在寻找问题答案的人,而不是专门针对发布问题的人。这就是为什么回答特定问题很重要,而不是成为对话的一部分。 People prefer it if distractions are removed from posts.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多