微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 MATLAB 中计算积分

如何解决在 MATLAB 中计算积分

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,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,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,G_upd_j1) - dot(g2(i,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

解决方法

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

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'];

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。