如何解决使用 Octave 进行迭代矩阵计算
对于我在大学的最后一篇论文,我必须对卫星观测的几个时期进行调整。几年前我也有过 Octave 的介绍,所以基础已经有了,但是复杂的系统仍然给我带来了困难,....
重点是计算每个时期的标准偏差。我设法使用以下脚本做到这一点:
%
clear all
%---------------A-Matrix der Unbekannten ----------------------------------------
A =[
0.28008766 -0.4136 0.8663 1 0 0 ;
-0.095831837 -0.6363 0.7654 1 0 0 ;
-0.08688968 -0.1004 0.9911 1 0 0 ;
0.105235503 -0.3136 -0.9437 1 0 0 ;
-0.377192249 -0.8999 0.2190 1 0 0 ;
-0.529941856 0.7977 -0.2878 1 0 0 ;
0.589888171 -0.1420 -0.7949 1 0 0 ;
-0.163909034 -0.0163 -0.9863 1 0 0 ;
0.070380984 -0.8484 -0.5247 0 1 0 ;
0.652946618 -0.2806 -0.7035 0 1 0 ;
-0.419696483 -0.2519 -0.8720 0 1 0 ;
-0.047740587 -0.7243 0.6878 0 1 0 ;
0.177956886 0.2086 0.9617 0 1 0 ;
-0.118688728 -0.8097 -0.5747 0 1 0 ;
-0.10323116 0.8849 0.4542 0 1 0 ;
0.322883236 -0.8961 0.3045 0 0 1 ;
-0.615313057 0.1248 0.7783 0 0 1 ;
-0.265484009 0.8784 0.3974 0 0 1 ;
-0.052812888 -0.2644 0.9630 0 0 1 ;
0.584602504 -0.5115 -0.6297 0 0 1 ;
-0.086429029 0.9347 0.3448 0 0 1 ;
];
%------------P-Matrix / Gewichtungsmatrix ---------------------------------------
P = diag([
0.657028746
0.756297479
1
0.044889963
1
0.758555093
0.323065011
-0.3968609
-0.875021299
-0.798771228
0.201267578
0.807951002
0.008964638
1
0.891343699
-0.749804668
0.746000511
0.899985397
1
0.513381134
0.904735186
]);
Qll = P^-1;
%----------------------- l-Vektor-----------------------------------------------
l = [
-0.6509
0.0942
-0.6129
-0.5601
-0.594
0.299
-0.5245
-0.2712
-0.8272
1.1112
-0.6396
0.0933
0.2468
-0.1922
0.7416
0.0905
0.5316
-0.1124
1.098
-0.2743
0.6689
];
%---------------------------Berechnung der Verbesserungsmatrix v und Unbekanntenvektor x-------------------------------------
N = A' * P * A;
x = N^-1 * A' * P * l;
v = A * x - l
%------------------------------ Standardabw. s --------------------------------------------------------------
%n = Anzahl der Messungen
%u = Anzahl der Unbekannten
n = length(A);
u = 6;
s = sqrt((v'*P*v)/(n-u))
但现在我的困难是进一步研究这些矩阵。 在我的 A 矩阵中,我现在想删除初始数据第 4 列的值低于例如的所有行40. 初始数据为:
90.1307 39.7929 -0.6509 47.835
51.6868 27.4026 0.0942 41.988
76.2555 64.5358 -0.6129 49.52
152.691 23.2248 -0.5601 40.024
290.2004 72.0358 -0.594 50.79
212.6439 34.8495 0.299 42.095
310.7814 16.6268 -0.5245 42.489
260.8512 30.0106 -0.2712 47.503
287.5385 43.4299 -0.8272 45.812
282.3375 24.3524 1.1112 44.814
333.5493 10.4841 -0.6396 39.889
120.8855 46.3654 0.0933 47.462
51.1299 32.709 0.2468 44.429
67.3987 81.0692 -0.1922 49.053
99.0763 27.8029 0.7416 43.344
55.3237 31.7253 0.0905 39.688
81.4813 33.6655 0.5316 42.764
300.3156 21.5825 -0.1124 43.979
287.2586 70.4128 1.098 52.028
71.5378 54.0883 -0.2743 49.849
174.4506 53.055 0.6689 40.858
A 矩阵和 P 矩阵是根据这些数据开发的。 如果现在第 4 列的值(例如第 11 行)低于 40,则该行也应与我的 A 矩阵、P 矩阵和 l 矩阵一起删除。 然后重复计算,重新计算标准差。
通过研究,我还发现了以下代码:
A = [1 2 3 4; 5 6 7 8; 9 10 11 0];
B = A; % Hilfsmatrix
spalte = 4; % Nur die vierte Spalte wird untersucht
j = 1;
count = 0;
for k=1:size(A,1) % Alle Zeilen werden durchsucht
if A(k,spalte) == 0 % Wenn der SpaltenEintrag in der k-ten Zeile Null ist
B(j,:) = []; % ... dann lösche die Zeile
count = count + 1;
j = k - count ;
end
end
A = B;
不幸的是,我不太清楚如何将它们组合在一起。
提前致谢!我希望这一切都可以理解。
多多问候
用www.DeepL.com/Translator翻译(免费版)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。