Ansatz (Geodäsie/Vermessung)

Dustin @, Neubrandenburg, Mittwoch, 12. Juli 2017, 20:18 (vor 134 Tagen) @ Dustin

Moin Micha,

hier mein vorerst "gelöstes" Problem. Der Lösungsansatz ist derzeit noch sehr simpel und weniger zufriedenstellend. Gerade die markierten Zeilen sind nur eine Zwischenlösung. Ich suche noch nach besseren Lösungen hierfür - und versuche es auf größere Wertebereiche zu übertragen, sodass später alles mit Matlab abläuft. In dem Zusammenhang werde ich auch noch einige Zeilen aufräumen. Momentan ist's etwas unübersichtlich. Doch immerhin: Die Ergebnisse sind zufriedenstellend.

clear all
 
%Dezimalstellen
format short g 
 
%gegebene Punkte
PA = [0.8,1.1,0.4];
PB = [1.2,2.2,0.8];
PC = [2.4,2.2,1.7];
 
%Matrizen für jeweils x, y, z der jeweiligen Punkte PA, PB, PC 
Px = [[PA(:,1)];[PB(:,1)];[PC(:,1)]];
Py = [[PA(:,2)];[PB(:,2)];[PC(:,2)]];
Pz = [[PA(:,3)];[PB(:,3)];[PC(:,3)]];
 
%Matrix mit PA, PB, PC und deren Koordinaten x, y, z  
P = [0.8 1.1 0.4
     1.2 2.2 0.8
     2.4 2.2 1.7];
 
%Vektor für ppm-Werte der Punkte PA, PB, PC 
PPM = [1756
       1758
       1761];
 
%Anzahl der zu simulierenden Werte (variabel)   
AnzahlWerte = 100;
 
%leerer Vektor
B = zeros(AnzahlWerte,1);
 
[b]%Simulation
%0.41, 0.29, 0.76 für unterschiedliche Werte (ansonsten gleiche Werte)[/b]
c = 0;
d = 3;
Cx = c + (d-c).*randn(AnzahlWerte,1)*0.41;
Cy = 0.7*(c + (d-c).*randn(AnzahlWerte,1)*0.29);
Cz = c + (d-c).*randn(AnzahlWerte,1)*0.76;
 
 
%simulierte Koordinaten für x, y, z
Rx = Cx';
Rx = Rx';
 
Ry = Cy';
Ry = Ry';
 
Rz = Cz';
Rz = Rz';
 
%Rc = Cc';
%Rc = Rc';
 
%simulierte Koordinaten gesamt
RG = [Rx,Ry,Rz];
 
%Abstände zwischen gegebenen Punkten
Abstandsmatrix = zeros(4,1);
 
Abstandsmatrix(1,1) = 0;
Abstandsmatrix(2,1) = sqrt(((PA(1,1)-PB(1,1))^2)+((PA(1,2)-PB(1,2))^2)+((PA(1,3)-PB(1,3))^2));
Abstandsmatrix(3,1) = sqrt(((PA(1,1)-PC(1,1))^2)+((PA(1,2)-PC(1,2))^2)+((PA(1,3)-PC(1,3))^2));
Abstandsmatrix(4,1) = sqrt(((PB(1,1)-PC(1,1))^2)+((PB(1,2)-PC(1,2))^2)+((PB(1,3)-PC(1,3))^2));
 
Abstandsmatrix;
 
%Abstände zwischen gegebenen und simulierten Werten 
PN = zeros(AnzahlWerte,1);
 
for i = 1:size(PN);
    P1N(i) = sqrt(((PA(1,1)-Rx(i,1))^2)+((PA(1,2)-Ry(i,1))^2)+((PA(1,3)-Rz(i,1))^2));
    P2N(i) = sqrt(((PB(1,1)-Rx(i,1))^2)+((PB(1,2)-Ry(i,1))^2)+((PB(1,3)-Rz(i,1))^2));
    P3N(i) = sqrt(((PC(1,1)-Rx(i,1))^2)+((PC(1,2)-Ry(i,1))^2)+((PC(1,3)-Rz(i,1))^2));
    i = i+1;
end
 
%Abstände zu PA, PB, PC zu Neupunkten
P1N = P1N';
P2N = P2N';
P3N = P3N';
 
%Abstände zu PA, PB, PC zu Neupunkten gesamt
PN = [P1N,P2N,P3N];
 
[b]%Berechnung Gammas, Anwendung sphärisches Modell
%a = range, C = Sill --> aus Excel[/b]
a = 1.690;
C = (19/3);
Gamma = zeros(4,100);
 
%Gammas zwischen bekannten und unbekannten Punkten 
 
%Gamma PA-PN 
for i=1:AnzahlWerte;
    for j=1:AnzahlWerte;
        if P1N(i,1)==0;
            Gamma(i,j) = 0;
        elseif P1N(i,1)>0 && P1N(i,1)<=a;
            Gamma(i,j) = C.*(((3.*P1N(i,1))./2.*a)-0.5.*(((abs(P1N(i,1)))./a).^3));
        elseif abs(P1N(i,1))>a;
            Gamma(i,j)=C;
        end
        j = j+1;
    end 
    i = i+1;
end
 
Gamma1 = Gamma(:,1);
 
%Gamma PB-PN 
for i=1:AnzahlWerte;
    for j=1:AnzahlWerte;
        if P2N(i,1)==0;
            Gamma(i,j) = 0;
        elseif P2N(i,1)>0 && P2N(i,1)<=a;
            Gamma(i,j) = C.*(((3.*P2N(i,1))./2.*a)-0.5.*(((abs(P2N(i,1)))./a).^3));
        elseif abs(P2N(i,1))>a;
            Gamma(i,j)=C;
        end
        j = j+1;
    end 
    i = i+1;
end
 
Gamma2 = Gamma(:,1);
 
%Gamma PC-PN
for i=1:AnzahlWerte;
    for j=1:AnzahlWerte;
        if P3N(i,1)==0;
            Gamma(i,j) = 0;
        elseif P3N(i,1)>0 && P3N(i,1)<=a;
            Gamma(i,j) = C.*(((3.*P3N(i,1))./2.*a)-0.5.*(((abs(P3N(i,1)))./a).^3));
        elseif abs(P3N(i,1))>a;
            Gamma(i,j)=C;
        end
        j = j+1;
    end 
    i = i+1;
end
 
Gamma3 = Gamma(:,1);
 
%Auffüllen der Matrix
Gamma4 = ones(AnzahlWerte,1);
 
%Gamma gesamt
Gamma = [Gamma1';Gamma2';Gamma3';Gamma4'];
 
%Gammas zwischen bekannten Punkten
Abstandsgamma = zeros(4,1);
 
Abstandsgamma(1,1)=0;
Abstandsgamma(2,1)=C.*(((3.*Abstandsmatrix(2,1))./2.*a)-0.5.*(((abs(Abstandsmatrix(2,1)))./a).^3));
Abstandsgamma(3,1)=C;
Abstandsgamma(4,1)=C.*(((3.*Abstandsmatrix(4,1))./2.*a)-0.5.*(((abs(Abstandsmatrix(4,1)))./a).^3));
Abstandsgamma;
 
MatrixA = [Abstandsgamma(1,1) Abstandsgamma(2,1) Abstandsgamma(3,1) 1
           Abstandsgamma(2,1) Abstandsgamma(1,1) Abstandsgamma(4,1) 1
           Abstandsgamma(3,1) Abstandsgamma(4,1) Abstandsgamma(1,1) 1
           1                  1                  1                  0];
 
InvMatrixA = inv(MatrixA);
 
Gewichte = zeros(4,AnzahlWerte);
 
for i = 1:100;
    %for j = 1:100;
        Gewichte(:,i)=InvMatrixA*Gamma(:,i);
        i = i+1;
end
 
Gewichte;
 
Gewichtsmatrix = [Gewichte(1,:)
                 Gewichte(2,:)
                 Gewichte(3,:)];
 
Endwertvektor = zeros(AnzahlWerte,1);
 
for i = 1:AnzahlWerte;
    Endwertvektor(i,1)=PPM(1,1)*Gewichtsmatrix(1,i)+PPM(2,1)*Gewichtsmatrix(2,i)+PPM(3,1)*Gewichtsmatrix(3,i);
    i=i+1;
end
 
Endwertvektor;

gesamter Thread:

 RSS-Feed dieser Diskussion