建模与MATLAB

今年从7月26日开始就在学校培训建模,可以说很累,各种收获也是有的,但是还是感觉跟不上老师的步伐,很多东西都来不及整理下面写一下我还记得的一些收获。

在做2017年的建模题对拍照赚钱APP定价问题上,小组做的过程中发现有几个网站比较好用

http://www.gpsspg.com/latitude-and-longitude.htm这是用gps来自动定位的,可以上传大批量的数据,它会显示哪个省哪个市哪个区,数据量比较大时需要一点时间,总体来说是很好用的,在给问题的分区上会提供方便。

亿景智图-企业地图服务智能平台这是地图无忧,这个地图会根据你上传的大批量数据在地图上显示位置分布,还提供了一些简单的统计分析。

对于数据分析题,一些软件的应用还是比较重要,spss也是一个比较方便的软件,但是再好的软件你还是需要对你要用到的方法理解,知道一些内在的理念,不是听说这个方法可以解决那些问题你就取用,也不知道方法的原理。如果不知道原理,可能连结果都看不懂,得看哪些指标也不知道,所以软件的利用是要有基础的。

对于很多统计问题,我们需要掌握的不仅仅是现行拟合,还需要有非线性拟合。

myfunc = inline('xinyu./(a(1).*xinyu+a(2))','a','xinyu');%三个参数分别为:函数模型(注意需要使用点除和点乘),待定系数,自变量,设定内敛函数
a0= [0.05,-0.01]';%待定系数的预估值
a=nlinfit(xinyu,pxinyu,myfunc,a0)%非线性函数拟合
scatter(xinyu,pxinyu);hold on;%画原数据散点图
y1=xinyu./(a(1).*xinyu+a(2));
plot(xinyu,y1)%画出非线性函数图像

https://blog.csdn.net/misayaaaaa/article/details/71129173,这是一些非线性函数的参考,里面有非线性函数的图,按照原数据分布和函数比对大致符合哪个函数,就开始拟合。

昨天晚上搜寻了高维数据降维的MATLAB编程方法

function Y=myLLe(x,K,d)
[m,n]=size(x);
x2=sum(x.^2,1);
square1=repmat(x2,n,1);
square2=repmat(x2',1,n);
factor=2*x'*x;
distance=square1+square2-factor;
[sorted,index]=sort(distance);
neighborhood=index(2:(1+K),:);
if(K>m)
    fprint(1,'将使用正则化\n');
    tol=1e-3;
else
    tol=1e-17;
end
W=zeros(K,n);
for ii=1:n
    z=x(:,neighborhood(:,ii))-repmat(x(:,ii),1,K);
    C=z'*z;
    C=C+eye(K,K)*tol*trace(C);
    W(:,ii)=C\ones(K,1);
    W(:,ii)=W(:,ii)/sum(W(:,ii));
end;
M=sparse(1:n,1:n,ones(1,n),n,n,4*K*n);
for ii=1:n
    w=W(:,ii);
    jj=neighborhood(:,ii);
    M(ii,jj)=M(ii,jj)-w';
    M(jj,ii)=M(jj,ii)-w;
    M(jj,jj)=M(jj,jj)+w*w';
end;
options.dip=0;
options.isreal=1;
options.issym=1;
[Y,eigenvals]=eigs(M,d+1,0,options);
Y=Y(:,2:d+1)'*sqrt(n);
fprintf(1,'Done.\n');


其实我还不太会用,主要是我对这个方法的原理没有理解

知道经纬度,怎么算距离呢,不能看作是直角坐标系来算距离

方法一:

A点纬度:a1,  经度:a2, B点纬度:b1,经度:b2 R为地球半径=6371.0004km

D(i,j)=R*acos[sin(a1)*sin(b1)+cos(a1)*cos(b1)*cos(a2-b2))*pi/180:只对经度做处理东经为正,西经为负;

方法二:

直接用MATLAB里面的distance函数

R*((2*pi)/360)* distance(a1,a2,b1,b2);或者 distance(a1,a2,b1,b2,R);

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值