diff --git a/difun.m b/difun.m new file mode 100644 index 0000000..8a1b267 --- /dev/null +++ b/difun.m @@ -0,0 +1,8 @@ +function y=difun(x) +if x<-pi + y=-x-pi +elseif x>-pi && x length(t) + ind=1; + end + j=j+1; + end + t(ind)=[] + ind=ind-1; + j=1; + a=a+1; +end +t diff --git a/lab2/pmzbfs.m b/lab2/pmzbfs.m new file mode 100644 index 0000000..0bef890 --- /dev/null +++ b/lab2/pmzbfs.m @@ -0,0 +1,10 @@ +function [raf,jl]=pmzbfs(x1,y1,x2,y2) +detx=x2-x1;dety=y2-y1; +faw1=atan(dety/detx); +j1=sqrt(detx*detx+dety*dety); +if detx<0 + raf=faw1+pi; +end +if (detx>0)*(det<0) + raf=faw1+2*pi; +end \ No newline at end of file diff --git a/lab2/rad2deg.m b/lab2/rad2deg.m new file mode 100644 index 0000000..b7a318f --- /dev/null +++ b/lab2/rad2deg.m @@ -0,0 +1,7 @@ +function jdeg=rad2deg(rad) +rad=rad*180/pi; +deg=fix(rad); +xsbf=(rad-deg)*60; +degf=fix(xsbf); +degm=(xsbf-degf)*60; +jdeg=deg+degf/100.0+degm/10000.0; \ No newline at end of file diff --git a/lab3/exercise3_1.m b/lab3/exercise3_1.m new file mode 100644 index 0000000..6d4344a --- /dev/null +++ b/lab3/exercise3_1.m @@ -0,0 +1,8 @@ +% 第一题 + +A=[3,4,-7,-12;5,-7,4,2;1,0,8,-5;-6,5,-2,10]; +B=[4;-3;9;-8]; +% 系数矩阵的秩 +rank(A) +% 方程的解 +C = A\B \ No newline at end of file diff --git a/lab3/exercise3_2.m b/lab3/exercise3_2.m new file mode 100644 index 0000000..6f4b642 --- /dev/null +++ b/lab3/exercise3_2.m @@ -0,0 +1,6 @@ +% 练习3 第二题 +x=-10:1:10; +y=-10:1:10; +[X,Y]=meshgrid(x,y); +Z=sin(sqrt(X.^2+Y.^2))./(sqrt(X.^2+Y.^2)); +surf(X,Y,Z) \ No newline at end of file diff --git a/lab3/exercise3_3.m b/lab3/exercise3_3.m new file mode 100644 index 0000000..c150458 --- /dev/null +++ b/lab3/exercise3_3.m @@ -0,0 +1,7 @@ +num=[1]; +den=[1 2 2 1]; +sys=tf(num,den); +figure(1); pzmap(sys); title('零极点图'); +figure(2); impulse(sys); +w=0:0.1:10*pi; +figure(3); freqs(num,den,w) \ No newline at end of file diff --git a/lab3/exercise3_4.m b/lab3/exercise3_4.m new file mode 100644 index 0000000..8768c19 --- /dev/null +++ b/lab3/exercise3_4.m @@ -0,0 +1,10 @@ +subplot(2,2,2); +x=-pi/2:pi/10:pi/2; +y=sqrt(cos(x)); +plot(x,y); +subplot(2,2,3); +x=-2:0.1:2; +y=-4:0.1:4; +[x,y]=meshgrid(x,y); +z=x.^2/4+y.^2/16; +surf(x,y,z) \ No newline at end of file diff --git a/lab3/lab3.m b/lab3/lab3.m new file mode 100644 index 0000000..1b5841b --- /dev/null +++ b/lab3/lab3.m @@ -0,0 +1,42 @@ +% 实验3 +% 读取数据 +[filename1,p1]=uigetfile('*.txt', '选择尼康全站仪坐标文件名'); +fp=fopen(strcat(p1,filename1),'r'); +i=1;bss=[]; +while ~feof(fp) + line=fgetl(fp); + data=findstr(line,','); + bss(i).dh=line(1:data(1)-1); + bss(i).x=str2num(line(data(1)+1:data(2)-1)); + bss(i).y=str2num(line(data(2)+1:data(3)-1)); + bss(i).h=str2num(line(data(3)+1:data(4)-1)); + bss(i).dm=line(data(4)+1:end); + i=i+1; +end +fclose(fp); + +% 计算国家坐标系的坐标 +a=3976223.453;b=39512553.524;rad=deg2rad(0.433267); +c=cos(rad);d=-sin(rad);lmd=1.000034336; +m=i-1;gjzb=[]; +for i=1:m + gjzb(i).dh=bss(i).dh; + gjzb(i).dm=bss(i).dm; + gjzb(i).h=bss(i).h; + gjzb(i).x=a+lmd*(c*bss(i).x-d*bss(i).y); + gjzb(i).y=b+lmd*(d*bss(i).x+c*bss(i).y); +end + +% 输出数据 +[filename2,p2]=uigetfile('*.txt', '输出文件'); +fn=fopen(strcat(p2,filename2),'w'); +fprintf(fn,'%s\n\n',' 点名 X(m) Y(m) H(mm) code'); +fclose(fp);fn=fopen(strcat(p2,filename2),'a'); +for i=1:m + fprintf(fn,'%8s', gjzb(i).dh); + fprintf(fn,'%15.3f', gjzb(i).x); + fprintf(fn,'%16.3f', gjzb(i).y); + fprintf(fn,'%10.3f', gjzb(i).h); + fprintf(fn,'%8s\n', strcat(' ',gjzb(i).dm)); +end +fclose(fn); \ No newline at end of file diff --git a/lab3/nikon.txt b/lab3/nikon.txt new file mode 100644 index 0000000..fa7a74a --- /dev/null +++ b/lab3/nikon.txt @@ -0,0 +1,7 @@ +3,49510.3110,80362.3190,405.8240,s50 +63,49488.9080,80426.0080,408.8490,S77 +164,49461.2960,80462.3610,408.9950,S77 +165,49457.2500,80485.8770,409.4490,S81 +166,49476.6650,80395.8870,408.1090,S66 +167,49475.1380,80398.7300,408.1570,S77 +298,49465.2360,80593.9700,415.1290,S99 \ No newline at end of file diff --git a/lab3/zhuanhuan.txt b/lab3/zhuanhuan.txt new file mode 100644 index 0000000..f9ff4c0 --- /dev/null +++ b/lab3/zhuanhuan.txt @@ -0,0 +1,9 @@ + 点名 X(m) Y(m) H(mm) code + + 3 4026749.416 39592285.024 405.824 s50 + 63 4026728.820 39592348.981 408.849 S77 + 164 4026701.670 39592385.683 408.995 S77 + 165 4026697.922 39592409.249 409.449 S81 + 166 4026716.196 39592319.017 408.109 S66 + 167 4026714.706 39592321.879 408.157 S77 + 298 4026707.277 39592517.236 415.129 S99 diff --git a/mat2dms.m b/mat2dms.m new file mode 100644 index 0000000..8172cb2 --- /dev/null +++ b/mat2dms.m @@ -0,0 +1,5 @@ +function dmsv=mat2dms(D) +[l,c]=size(D); +for i=1:l + dmsv(i)=D(i,1)+D(1,2)/60+D(i,3)/3600; +end \ No newline at end of file diff --git a/num2p.m b/num2p.m new file mode 100644 index 0000000..800ed33 --- /dev/null +++ b/num2p.m @@ -0,0 +1,8 @@ +function a=num2p(n) +strr=num2str(n); +index=size(strr); +indexx=index(2); +a=[]; +for k=indexx-1:-1:0 + a=[a rem(fix(n/(10^k)),10)]; +end diff --git a/qwe.mat b/qwe.mat new file mode 100644 index 0000000..ecb75a8 Binary files /dev/null and b/qwe.mat differ diff --git a/rad2dms.m b/rad2dms.m new file mode 100644 index 0000000..6deb25b --- /dev/null +++ b/rad2dms.m @@ -0,0 +1,2 @@ +function radv=rad2dms(dv) +radv=rem(dv*pi/180,2*pi); \ No newline at end of file diff --git a/tiaojianpingcha.m b/tiaojianpingcha.m new file mode 100644 index 0000000..d27fec5 --- /dev/null +++ b/tiaojianpingcha.m @@ -0,0 +1,31 @@ +clc +disp('条件平差示例2') +disp('三角形内角观测值') +L1=[42,12,20] +L2=[78,9,9] +L3=[59,38,40] +L=[L1;L2;L3] +disp('将角度转换为弧度') +% LL=dms2rad(mat2dms(L)); +% A=[1,1,1]; +% w=sum(LL(:))-pi; +% w=dms2mat(rad2dms(w)); +% P=eye(3); +% Naa=A*inv(P)*A'; +% Ka=-inv(Naa)*w; +% V=A'*Ka; +% L1=L+V; +% LL=dms2rad(mat2dms(L1)); +% sumLL=sum(LL); +% if (abs(sum(LL)-pi)<1e-4) +% disp('正确') +% else +% disp('错误') +% end + +SumLL=tjpc(L); +if (abs(SumLL-pi)<1e-4) + disp('正确') +else + disp('错误') +end \ No newline at end of file diff --git a/tjpc.m b/tjpc.m new file mode 100644 index 0000000..7ff618c --- /dev/null +++ b/tjpc.m @@ -0,0 +1,12 @@ +function sumLL=tjpc(L) +LL=dms2rad(mat2dms(L)) +A=[1,1,1]; +w=sum(LL(:))-pi; +w=dms2mat(rad2dms(w)); +P=eye(3); +Naa=A*inv(P)*A'; +Ka=-inv(Naa)*w; +V=A'*Ka; +L1=L+V; +LL=dms2rad(mat2dms(L1)); +sumLL=sum(LL); \ No newline at end of file diff --git a/ttry.m b/ttry.m new file mode 100644 index 0000000..6f2b3d6 --- /dev/null +++ b/ttry.m @@ -0,0 +1,7 @@ +function ppi=ttry(n) +pointx=-1+2*rand(1,n); +pointy=-1+2*rand(1,n); +index=pointx.*pointx+pointy.*pointy +indexx=index<=1; +ppi=4*sum(indexx)/n +end diff --git a/untitled3.m b/untitled3.m new file mode 100644 index 0000000..6d62bec --- /dev/null +++ b/untitled3.m @@ -0,0 +1,10 @@ +A=[1,1,1]; +L=[1,2,2]; +H=[1.003,0.501,-0.503]; +w=7; +P=diag(2./L); +P1=inv(P); +N=A*P1*A'; +Ka=7/N*8; +V=P1*A'*Ka; +h=V'+H \ No newline at end of file diff --git a/untitled5.m b/untitled5.m new file mode 100644 index 0000000..7658ec3 --- /dev/null +++ b/untitled5.m @@ -0,0 +1,30 @@ +clc +clear +h1=-1.004; +h2=1.516; +h3=2.512; +h4=1.520; +HA=12.013; +HB=10.013; +h=[h1,h2,h3,h4]' +s1=2; +s2=1; +s3=2; +s4=1.5; +s=[s1,s2,s3,s4]' +A=[1,1,-1,0;0,1,1,-1]; +w1=h1+h2-h3+Ha-HB; +w2=h2-h4; +w=[w1;w2]; +P=diag(1./S) +Naa=A*inv(P)*A'; +Ka=-inv(P)*A'*Ka; +H=h+V; +if H(1,1)+H(2,1)-H(3,1)+HA-HB == 0 && H(2,1)-H(4,1)==0 + disp('正确') +else + disp('错误') +end +disp('平差结果'); +HC=HA+H(1,1) +HD=HA+H(1,1)+H(4,1) \ No newline at end of file diff --git a/veryfun.m b/veryfun.m new file mode 100644 index 0000000..9b2055e --- /dev/null +++ b/veryfun.m @@ -0,0 +1,16 @@ +function f=veryfun(n) +if n==6174 + return +else + index(1)=(n-rem(n,1000))/1000; + index(2)=fix(n/100)-index(1)*10; + index(3)=rem(fix(n/10),10); + index(4)=rem(n,10); + index2=sort(index,'ascend'); + index3=sort(index,'descend'); + a=[1000 100 10 1]; + max1=index3*(a'); + min1=index2*(a'); + max1-min1 + veryfun(max1-min1) +end \ No newline at end of file