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

使用 Octave 进行迭代矩阵计算

如何解决使用 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 举报,一经查实,本站将立刻删除。