如何解决在 MATLAB 中计算积分
如何计算屏幕截图中显示的积分,
其中 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 举报,一经查实,本站将立刻删除。