在 MATLAB 中计算积分

时间:2021-03-23 21:19:16

标签: matlab integration calculus

integral in question

如何计算屏幕截图中显示的积分, 其中 j1 是一个 1x3 矩阵,j2 也是一个 1x3 矩阵, 而 g1 是一个 300x3 矩阵,而 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

1 个答案:

答案 0 :(得分:0)

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

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'];
相关问题