当前位置: 首页 > news >正文

[RTKLIB]模糊度固定相关问题(二)

文章目录

  • 一、固定模糊度的前置工作
    • 1. 做好固定模糊度的准备
    • 2. 建立双差模糊度
    • 3. 问题与总结

版权声明:本文为原创文章,版权归 Winston Qu 所有,转载请注明出处。

  在上一篇文章中,介绍了RTKLIB中manage_amb_LAMBDA()函数,并详细介绍了其操作方式和工作方法。可见[RTKLIB]模糊度固定相关问题(一)
  本篇文章中,我们针对其模糊度固定函数resamb_LAMBDA()ddidx()做详细的分析,进一步的探索模糊度固定中有意思的部分。

一、固定模糊度的前置工作

1. 做好固定模糊度的准备

  在前一篇文中我们说到,为了提高浮点模糊度的固定率,进行了部分模糊度*、延迟上星的操作。但究其根本,还没有真正接触到模糊度固定的底层,并没有创建模糊度双差数组,也没有去建立模糊度求解的矩阵方程,更还没尝试通过整数最小二乘方法去固定模糊度。
  模糊度固定是一个比较复杂和繁琐的过程,前期会有许多的准备过程。从状态量中提取我们需要的状态,通过方差-协方差阵计算我们需要的Q矩阵。然后通过LAMBDA方法去求解固定后的状态向量,并通过一定的方法转换到单差模糊度,修正已有状态量。… 上述过程听着就挺复杂的,我们可以通过函数仔细看看做了哪些工作,从中理解设计和求解的思想。
附上源代码:

/* resolve integer ambiguity by LAMBDA ---------------------------------------*/
static int resamb_LAMBDA(rtk_t *rtk, double *bias, double *xa,int gps,int glo,int sbs)
{prcopt_t *opt=&rtk->opt;int i,j,nb,nb1,info,nx=rtk->nx,na=rtk->na;double *DP,*y,*b,*db,*Qb,*Qab,*QQ,s[2];int *ix;double var=0,coeff[3];double QQb[MAXSAT];trace(3,"resamb_LAMBDA : nx=%d\n",nx);rtk->sol.ratio=0.0;rtk->nb_ar=0;if (rtk->opt.mode<=PMODE_DGPS||rtk->opt.modear==ARMODE_OFF||rtk->opt.thresar[0]<1.0) {return 0;}/* skip AR if position variance too high to avoid false fix */for (i=0;i<3;i++) var+=rtk->P[i+i*rtk->nx];var=var/3.0; /* maintain compatibility with previous code */trace(3,"posvar=%.6f\n",var);if (var>rtk->opt.thresar[1]) {errmsg(rtk,"position variance too large:  %.4f\n",var);return 0;}/* Create index of single to double-difference transformation matrix (D')used to translate phase biases to double difference */ix=imat(nx,2);if ((nb=ddidx(rtk,ix,gps,glo,sbs))<(rtk->opt.minfixsats-1)) {  /* nb is sat pairs */errmsg(rtk,"not enough valid double-differences\n");free(ix);return -1; /* flag abort */}rtk->nb_ar=nb;/* nx=# of float states, na=# of fixed states, nb=# of double-diff phase biases */y=mat(nb,1); DP=mat(nb,nx-na); b=mat(nb,2); db=mat(nb,1); Qb=mat(nb,nb);Qab=mat(na,nb); QQ=mat(na,nb);/* phase-bias covariance (Qb) and real-parameters to bias covariance (Qab) *//* y=D*xc, Qb=D*Qc*D', Qab=Qac*D' */for (i=0;i<nb;i++) {y[i]=rtk->x[ix[i*2]]-rtk->x[ix[i*2+1]];}for (j=0;j<nx-na;j++) for (i=0;i<nb;i++) {DP[i+j*nb]=rtk->P[ix[i*2]+(na+j)*nx]-rtk->P[ix[i*2+1]+(na+j)*nx];}for (j=0;j<nb;j++) for (i=0;i<nb;i++) {Qb[i+j*nb]=DP[i+(ix[j*2]-na)*nb]-DP[i+(ix[j*2+1]-na)*nb];}for (j=0;j<nb;j++) for (i=0;i<na;i++) {Qab[i+j*na]=rtk->P[i+ix[j*2]*nx]-rtk->P[i+ix[j*2+1]*nx];}for (i=0;i<nb;i++) QQb[i]=1000*Qb[i+i*nb];trace(3,"N(0)=     "); tracemat(3,y,1,nb,7,2);trace(3,"Qb*1000=  "); tracemat(3,QQb,1,nb,7,4);/* lambda/mlambda integer least-square estimation *//* return best integer solutions *//* b are best integer solutions, s are residuals */if (!(info=lambda(nb,2,y,Qb,b,s))) {trace(3,"N(1)=     "); tracemat(3,b   ,1,nb,7,2);trace(3,"N(2)=     "); tracemat(3,b+nb,1,nb,7,2);rtk->sol.ratio=s[0]>0?(float)(s[1]/s[0]):0.0f;if (rtk->sol.ratio>999.9) rtk->sol.ratio=999.9f;/* adjust AR ratio based on # of sats, unless minAR==maxAR */if (opt->thresar[5]!=opt->thresar[6]) {nb1=nb<50?nb:50; /* poly only fitted for upto 50 sat pairs *//* generate poly coeffs based on nominal AR ratio */for ((i=0);i<3;i++) {coeff[i] = ar_poly_coeffs[i][0];for ((j=1);j<5;j++)coeff[i] = coeff[i]*opt->thresar[0]+ar_poly_coeffs[i][j];}/* generate adjusted AR ratio based on # of sat pairs */rtk->sol.thres = coeff[0];for (i=1;i<3;i++) {rtk->sol.thres = rtk->sol.thres*1/(nb1+1)+coeff[i];}rtk->sol.thres = MIN(MAX(rtk->sol.thres,opt->thresar[5]),opt->thresar[6]);} elsertk->sol.thres=(float)opt->thresar[0];/* validation by popular ratio-test of residuals*/if (s[0]<=0.0||s[1]/s[0]>=rtk->sol.thres) {/* init non phase-bias states and covariances with float solution values *//* transform float to fixed solution (xa=xa-Qab*Qb\(b0-b)) */for (i=0;i<na;i++) {rtk->xa[i]=rtk->x[i];for (j=0;j<na;j++) rtk->Pa[i+j*na]=rtk->P[i+j*nx];}/* y = differences between float and fixed dd phase-biasesbias = fixed dd phase-biases   */for (i=0;i<nb;i++) {bias[i]=b[i];y[i]-=b[i];}/* adjust non phase-bias states and covariances using fixed solution values */if (!matinv(Qb,nb)) {  /* returns 0 if inverse successful *//* rtk->xa = rtk->x-Qab*Qb^-1*(b0-b) */matmul("NN",nb,1,nb, 1.0,Qb ,y,0.0,db); /* db = Qb^-1*(b0-b) */matmul("NN",na,1,nb,-1.0,Qab,db,1.0,rtk->xa); /* rtk->xa = rtk->x-Qab*db *//* rtk->Pa=rtk->P-Qab*Qb^-1*Qab') *//* covariance of fixed solution (Qa=Qa-Qab*Qb^-1*Qab') */matmul("NN",na,nb,nb, 1.0,Qab,Qb ,0.0,QQ);  /* QQ = Qab*Qb^-1 */matmul("NT",na,na,nb,-1.0,QQ ,Qab,1.0,rtk->Pa); /* rtk->Pa = rtk->P-QQ*Qab' */trace(3,"resamb : validation ok (nb=%d ratio=%.2f thresh=%.2f s=%.2f/%.2f)\n",nb,s[0]==0.0?0.0:s[1]/s[0],rtk->sol.thres,s[0],s[1]);/* translate double diff fixed phase-bias values to single diff fix phase-bias values, result in xa */restamb(rtk,bias,nb,xa);}else nb=0;}else { /* validation failed */errmsg(rtk,"ambiguity validation failed (nb=%d ratio=%.2f thresh=%.2f s=%.2f/%.2f)\n",nb,s[1]/s[0],rtk->sol.thres,s[0],s[1]);nb=0;}}else {errmsg(rtk,"lambda error (info=%d)\n",info);nb=0;}free(ix);free(y); free(DP); free(b); free(db); free(Qb); free(Qab); free(QQ);return nb; /* number of ambiguities */
}

  我们来拆解步骤,并给出详细的解释。

  1. 准入条件判断,根据定为模式、位置方差判断当前是否适合进入模糊度固定。ps:可以想想如果位置方差很大,为什么不适合进入模糊度固定呢?
  2. 申请了一个im=(nx,2)的空间,用于保存构建双差浮点模糊度的索引值。之后通过ddidx()函数构建了双差浮点模糊度矩阵,在此处做了一个模糊度个数的判断,判断是否小于设定的最小固定卫星。ps:若出现三颗三频的卫星,此处的nb=(3-1)*3=6,确实满足最小卫星>4的条件,但是此处的固定是否有意义呢?我觉得这是一个版本迭代的BUG
  3. 根据公式计算双差浮点模糊度y、双差协方差矩阵Qb、双差实参协方差矩阵Qabps:如果从理论角度来说,在此处我们需要求四个矩阵,分别为Qa、Qab、Qba、Qb,但实质上我们只用到Qb、Qab就能完成整个计算流程。
  4. 输出固定前的浮点双差模糊度N(0)和模糊度的方差Qb*1000,在调试模糊度固定的时候,这两个值是非常重要的两个值。
  5. 使用lambda()函数进行浮点双差模糊度的固定,如果解算失败就释放申请的内存;若解算成功,则进行ratio testps:这里的解算成功不是指成功求解整数模糊度,而是指成功进行lambda()解算
  6. 输出计算过后的整数双差模糊度的最优解和次优解,如果设置了动态AR阈值,还需要根据卫星数计算模糊度阈值。
  7. 进行ratio test判断模糊度最优解与次优解的残差是否合规,模糊度是否可以被采纳。
  8. 将计算的整数双差模糊度通过计算更新到固定解位置和相应的方差-协方差解算矩阵上,并通过restamb()函数将整数双差模糊度转换到对应的浮点单差模糊度。ps:保存在xa变量中了,此处的restamb()与ddidx()互为反映射关系
  9. 返回模糊度个数nb

2. 建立双差模糊度

  如果要进行模糊度解算,肯定需要在系统中简历双差模糊度方程,如何做双差?选择怎样的卫星作为第一颗卫星?其中的奥秘都集中在ddidx()函数中。
附上源代码:

/* index for single to double-difference transformation matrix (D') --------------------*/
static int ddidx(rtk_t *rtk, int *ix, int gps, int glo, int sbs)
{int i,j,k,m,f,n,nb=0,na=rtk->na,nf=NF(&rtk->opt),nofix;double fix[MAXSAT],ref[MAXSAT];trace(3,"ddmat: gps=%d/%d glo=%d/%d sbs=%d\n",gps,rtk->opt.gpsmodear,glo,rtk->opt.glomodear,sbs);/* clear fix flag for all sats (1=float, 2=fix) */for (i=0;i<MAXSAT;i++) for (j=0;j<NFREQ;j++) {rtk->ssat[i].fix[j]=0;}for (m=0;m<6;m++) { /* m=0:GPS/SBS,1:GLO,2:GAL,3:BDS,4:QZS,5:IRN *//* skip if ambiguity resolution turned off for this sys */nofix=(m==0&&gps==0)||(m==1&&glo==0)||(m==3&&rtk->opt.bdsmodear==0);        /* step through freqs */ for (f=0,k=na;f<nf;f++,k+=MAXSAT) {/* look for first valid sat (i=state index, i-k=sat index) */for (i=k;i<k+MAXSAT;i++) {/* skip if sat not active */if (rtk->x[i]==0.0||!test_sys(rtk->ssat[i-k].sys,m)||!rtk->ssat[i-k].vsat[f]) {continue;}/* set sat to use for fixing ambiguity if meets criteria */if (rtk->ssat[i-k].lock[f]>=0&&!(rtk->ssat[i-k].slip[f]&2)&&rtk->ssat[i-k].azel[1]>=rtk->opt.elmaskar&&!nofix) {rtk->ssat[i-k].fix[f]=2; /* fix */break;/* break out of loop if find good sat */}/* else don't use this sat for fixing ambiguity */else rtk->ssat[i-k].fix[f]=1;}if (rtk->ssat[i-k].fix[f]!=2) continue;  /* no good sat found *//* step through all sats (j=state index, j-k=sat index, i-k=first good sat) */for (n=0,j=k;j<k+MAXSAT;j++) {if (i==j||rtk->x[j]==0.0||!test_sys(rtk->ssat[j-k].sys,m)||!rtk->ssat[j-k].vsat[f]) {continue;}if (sbs==0 && satsys(j-k+1,NULL)==SYS_SBS) continue; if (rtk->ssat[j-k].lock[f]>=0&&!(rtk->ssat[j-k].slip[f]&2)&&rtk->ssat[j-k].vsat[f]&&rtk->ssat[j-k].azel[1]>=rtk->opt.elmaskar&&!nofix) {/* set D coeffs to subtract sat j from sat i */ix[nb*2  ]=i; /* state index of ref bias */ix[nb*2+1]=j; /* state index of target bias *//* inc # of sats used for fix */ref[nb]=i-k+1;fix[nb++]=j-k+1;rtk->ssat[j-k].fix[f]=2; /* fix */n++; /* count # of sat pairs for this freq/constellation */}/* else don't use this sat for fixing ambiguity */else rtk->ssat[j-k].fix[f]=1;}/* don't use ref sat if no sat pairs */if (n==0) rtk->ssat[i-k].fix[f]=1;}}if (nb>0) {trace(3,"refSats=");tracemat(3,ref,1,nb,7,0);trace(3,"fixSats=");tracemat(3,fix,1,nb,7,0);}return nb;
}

  我们来拆解步骤,并给出详细的解释。

  1. 对所有的卫星rtk->ssat[i].fix[j]结构体进行清空,进行初始化。
  2. 对每个星座的每个频率进行双重循环,确定每个星座和每个频率中的参考卫星第一颗符合规定的卫星,对符合条件的卫星设定rtk->ssat[i-k].fix[f]=2; /* fix */,对有载波观测值但不符合条件的卫星设定rtk->ssat[i-k].fix[f]=1;完成卫星清洗工作,选出参考卫星。ps:本段存在很大的问题,在后面详细叙述。
  3. 上一个循环已经确定了参考卫星,在这个循环中确定同星座同频率的非参考卫星,与参考卫星组pairs,并记录对应的索引号、卫星号。
  4. 返回双差卫星(模糊度)个数。

3. 问题与总结

  通过上述的两个函数,我们就完成了除整数最小二乘(LAMBDA)外的所有模糊度固定的流程。表面上似乎没问题,但通过仔细的解析和细细回味,可以发现很多不合理的地方。

  1. 选择参考星的时候,并没有选择高度角最高的卫星;ps:这个问题其实困扰我一段时间了,似乎如果只更新xa、xp,选择高度角最高的卫星和系统内的第一颗卫星并没有很大的差别
  2. 双差模糊度nb和参与计算的卫星ns之争。在上述的代码中,使用nb判断这次解算是否有效,这似乎是一个随着版本迭代的bug。在单频状态下,nb确实可以代表参与解算的卫星数,但随着频率的增加,多频模糊度固定时,nb的数量可能会很大,但是真实参与解算和固定的卫星ns可能不满足固定的最小卫星数,此时固定的解算结果有意义吗?ps:通过固定的模糊度修正的nx实际上是秩亏的,个人认为是不正确的。
  3. restamb()与ddidx()互为映射关系,但其中的判断条件太简单了,且需要丰富判断条件。

版权声明:本文为原创文章,版权归 Winston Qu 所有,转载请注明出处。

相关文章:

[RTKLIB]模糊度固定相关问题(二)

文章目录 一、固定模糊度的前置工作1. 做好固定模糊度的准备2. 建立双差模糊度3. 问题与总结 版权声明&#xff1a;本文为原创文章&#xff0c;版权归 Winston Qu 所有&#xff0c;转载请注明出处。 在上一篇文章中&#xff0c;介绍了RTKLIB中manage_amb_LAMBDA()函数&#xff…...

QtAV for ubuntu16.04

下载ubuntu https://releases.ubuntu.com/16.04/ubuntu-16.04.7-desktop-amd64.iso 下载ffmpeg https://ffmpeg.org/download.html 下载QtAV https://github.com/wang-bin/QtAV/releases 更新 sudo apt update 安装库 sudo apt-get install libglu1-mesa-dev freeglut3-dev…...

MFC 文件读写包括字符串的结构体

试过CString char* 写入的都是地址 struct Param{int ID;int index;char val[128]; };vector<Param>ans; UINT count 17; ans.resize(count); FILE* fp; fopen_s(&fp,_T("my.txt"),_T("rb")); if(count ! fread(&ans[0],sizeof(Param),cou…...

在家构建您的迷你聊天Chat gpt

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 什么是指令遵循模型&#xff1f; 语言模型是机器学习模型&#xff0c;可以根据句子的前一个单词预测单词概率。如果我们向模型请求下一个单词&#xff0c;并将其递减地反馈给模型以请求更多单词&#xff…...

pytest自动化测试框架之断言

前言 断言是完整的测试用例中不可或缺的因素&#xff0c;用例只有加入断言&#xff0c;将实际结果与预期结果进行比对&#xff0c;才能判断它的通过与否。 unittest 框架提供了其特有的断言方式&#xff0c;如&#xff1a;assertEqual、assertTrue、assertIn等&#xff0c;py…...

C++模板的用法

目录 模板的概念 函数模板&#xff08;Function Templates&#xff09; 基本用法 函数模板的实例化 匹配原则 类模板&#xff08;Class Templates&#xff09; 模板的概念 C中的模板&#xff08;Templates&#xff09;实际上是一种泛型编程&#xff08;Generic Programm…...

ESP 32 蓝牙虚拟键盘链接笔记本电脑的键值问题

由于打算利用esp32 通过蓝牙链接电脑后实现一些特俗的键盘功能&#xff0c;所以就折腾了一下&#xff0c;折腾最耗费时间的却是键值问题&#xff0c;让一个20多年的老司机重新补充了知识 过程曲折就不说了&#xff0c;直接说结果。 我们通过网络搜索获取的键值和蓝牙模拟键盘传…...

128.【Maven】

Maven仓库 (一)、Maven 简介1.传统项目管理的缺点2.Maven是什么3.Maven的作用 (二)、Maven 的下载与安装1.下载与认识目录2.配置Maven的全局环境 (三)、Maven 的基础概念1.Maven 仓库(1).仓库分类 2. Maven 坐标3.Maven 本地仓库配置(1).改变默认的仓库地址(2).改变远程仓库地址…...

嵌入式虚拟仿真实验教学平台之串口发送数据

嵌入式虚拟仿真实验教学平台课程系列 串口发送数据实验 课程内容 本实验使用 STM32 的串口发送数据。开始仿真后,打开串口监视器&#xff0c;串口监视器会打印出要发送的数据。 课程目标 学习配置使用GPIO功能学习配置使用复用功能学习配置使用UART功能 硬件设计 本课程…...

Android Studio 屏幕适配

Android开发屏幕适配流程 首先studio中没有ScreenMatch这个插件的&#xff0c;下去现在这个插件 点击File->settings->Plugins->(搜索ScreenMatch插件)&#xff0c;点击下载&#xff0c;应用重启Studio即可&#xff0c;如下图 在values下 创建dimens.xml&#xff0c…...

【C++】C++11--- 线程库及详解lock_guard与unique_lock

目录 一、thread类的介绍二、线程函数参数三、 原子性操作库四、lock_guard与unique_lock4.1、mutex的种类4.2 lock_guard4.3 unique_lock 一、thread类的介绍 在C11之前&#xff0c;涉及到多线程问题&#xff0c;都是和平台相关的&#xff0c;比如**windows和linux下各有自己…...

第二篇|研究数据哪里来——建筑业

数据是研究和产业发展的重要基石&#xff0c;然而无论是学者、企业还是研究机构往往都面临着“找数据难”的局面。本期将分享一些查找建筑相关的数据及资料的渠道。希望可以帮大家解决这一难题&#xff0c;有用求收藏求收藏求收藏~ 1.政府机构 可以查找国家、地方政府的建筑行…...

numpy ascontiguousarra 学习笔记

目录 numpy ascontiguousarra函数 转换命令&#xff1a; ascontiguousarray等价效果&#xff1a; ascontiguousarray学习笔记 ascontiguousarray函数将一个内存不连续存储的数组转换为内存连续存储的数组&#xff0c;使得运行速度更快。 在昇腾开发版上使用时&#xff0c;…...

【算法|双指针系列No.1】leetcode283. 移动零

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…...

PHP8定义字符串的方法-PHP8知识详解

字符串&#xff0c;顾名思义&#xff0c;就是将一堆字符串联在一起。字符串简单的定义方法是使用英文单引号&#xff08; &#xff09;或英文双引号&#xff08;" "&#xff09;包含字符。另外&#xff0c;还可以使用定界符定义字符串。本文还介绍了字符串的连接符。…...

分享21年电赛F题-智能送药小车-做题记录以及经验分享

这里写目录标题 前言一、赛题分析1、车型选择2、巡线1、OpenMv循迹2、灰度循迹 3、装载药品4、识别数字5、LED指示6、双车通信7、转向方案1、开环转向2、位置环速度环闭环串级转向3、MPU6050转向 二、调试经验分享1、循迹2、识别数字3、转向4、双车通信5、逻辑处理6、心态问题 …...

字符串统计-C语言/Java

描述 计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 &#xff0c;包括 0 和 127 )&#xff0c;换行表示结束符&#xff0c;不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次。数据范围&#xff1a; 1≤n≤500 例如&#xff0c;对于字符串 ab…...

Styled-components,另一种css in js的方案

介绍 Styled-components是一种流行的CSS-in-JS库&#xff0c;它为React和React Native应用程序提供了一种优雅的方式来管理组件的样式。它的设计理念是将CSS样式与组件逻辑紧密绑定在一起&#xff0c;从而使样式在组件层级中作用更加清晰和可维护 使用 安装Styled-components…...

nginx部署以及反向代理多域名实现HTTPS访问

nginx部署以及反向代理多域名实现 1.nginx部署 1.1 编写nginx部署文件 docker-compose.yml version: 3 services: nginx:restart: always image: nginx:1.20container_name: nginx-mainports:- 80:80- 443:443volumes: # 基础配置- /opt/nginx_main/nginx-info/nginx.conf:/…...

24届近5年东华大学自动化考研院校分析

今天给大家带来的是东华大学控制考研分析 满满干货&#xff5e;还不快快点赞收藏 一、东华大学 学校简介 东华大学&#xff08;Donghua University&#xff09;&#xff0c;地处上海市&#xff0c;是教育部直属全国重点大学&#xff0c;国家“双一流”、“211工程”建设高校…...

nacos伪集群启动成功,但是服务注册不上的问题

项目场景&#xff1a; nacos 伪集群启动成功&#xff0c;但是服务未注册上的问题&#xff1a; 问题描述 在学习nacos中&#xff0c;我买了一台阿里云服务器&#xff0c;在其上部署了nginx及三个nacos 端口分别是 8848 8868 8888 我按照正常的流程 解压nacos修改application.p…...

tidevice+appium在windows系统实施iOS自动化

之前使用iOS手机做UI自动化都是在Mac电脑上进行的&#xff0c;但是比较麻烦&#xff0c;后来看到由阿里开源的tidevice工具可以实现在windows上启动WDA&#xff0c;就准备试一下&#xff0c;记录一下过程。 tidevice的具体介绍可以参考一下这篇文章&#xff1a;tidevice 开源&…...

面试热题(LRU缓存)

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返回 -1 …...

微信小程序开发【从0到1~入门篇】2023.08

一个小程序主体部分由三个文件组成&#xff0c;必须放在项目的根目录&#xff0c;如下&#xff1a; 文件必须作用app.js是小程序逻辑app.json是小程序公告配置app.wxss否小程序公告样式表 3. 小程序项目结构 一个小程序页面由四个文件组成&#xff0c;分别是&#xff1a; 文…...

P1398 [NOI2013] 书法家

题目描述 输入 #1 3 13 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 输出 #1 24 输入 #2 3 13 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1…...

【构建卷积神经网络】

构建卷积神经网络 卷积网络中的输入和层与传统神经网络有些区别&#xff0c;需重新设计&#xff0c;训练模块基本一致 全连接层&#xff1a;batch784&#xff0c;各个像素点之间都是没有联系的。 卷积层&#xff1a;batch12828&#xff0c;各个像素点之间是有联系的。 impor…...

SSH 认证原理

SSH协议登录服务器&#xff1a; $ ssh userhost 主要有两种登录方式&#xff1a;第一种为密码口令登录&#xff0c;第二种为公钥登录 密码口令登录 通过密码进行登录&#xff0c;主要流程为&#xff1a; 1、客户端连接上服务器之后&#xff0c;服务器把自己的公钥传给客户端…...

基于DETR (DEtection TRansformer)开发构建MSTAR雷达影像目标检测系统

关于DETR相关的实践在之前的文章中很详细地介绍过&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《DETR (DEtection TRansformer)基于自建数据集开发构建目标检测模型超详细教程》 《书接上文——DETR评估可视化》 基于MSTAR雷达影像数据开发构建目标检测系统&am…...

Java分布式微服务1——注册中心(Eureka/Nacos)

文章目录 基础知识注册中心Eureka注册中心与Ribbon负载均衡1、Eureka注册中心2、Eureka的搭建3、Eureka服务注册4、复制服务实例5、拉取服务6、Ribbon负载均衡的流程及Eureka规则调整&#xff1a;7、Ribbon负载均衡饥饿加载 Nacos注册中心1、服务端Nacos安装与启动2、客户端Nac…...

(文章复现)建筑集成光储系统规划运行综合优化方法matlab代码

参考文献&#xff1a; [1]陈柯蒙,肖曦,田培根等.一种建筑集成光储系统规划运行综合优化方法[J].中国电机工程学报,2023,43(13):5001-5012. 1.基本原理 本文建立的双层耦合模型内、外层分别对应求解容量配置与能量调度问题。外层模型设置光伏与储能容量备选集并将容量配置组合…...

烟台开发区建设业联合会网站/百度助手app下载安装

1696:逆波兰表达式 总时间限制: 1000ms 内存限制: 65536kB描述逆波兰表达式是一种把运算符前置的算术表达式&#xff0c;例如普通的表达式2 3的逆波兰表示法为 2 3。逆波兰表达式的优点是运算符之间不必有优先级关系&#xff0c;也不必用括号改变运算次序&#xff0c;例如(2 …...

网上接网站开发不给钱怎么办/nba最新消息新闻报道

前言最近在和一个档案管理系统对接&#xff0c;需要把我方系统文件压缩成zip格式&#xff0c;通过ftp的方式upload到指定的服务器上&#xff0c;考虑到Java的平台无关性&#xff0c;一开始便使用Java自带的类库java.util.zip来实现文件的压缩&#xff0c;谁曾想传送过去的压缩文…...

网站怎么做抽奖/做小程序公司哪家好

我正在尝试通过ftp_put将文件上传到Windows服务器.我的代码如下&#xff1a;$date date(ymd);$file_name $date..csv;$file_location D:/inetpub/wwwroot/website.com/html/assets/.$file_name;//set up basic connection$conn_id ftp_connect(FTP_HOST, FTP_PORT);// logi…...

旅游网站首页设计图片/六年级下册数学优化设计答案

作爲一個組項目的一部分&#xff0c;我們有一個2個非線性微分方程組&#xff0c;我們必須使用中點法繪製S S(t)&#xff0c;I I(t)圖形。關於MATLAB中的inlineeval的錯誤而我得到試圖插入與相應的微分方程的矩陣時以下錯誤&#xff1a;在內嵌表達式>矩陣([[「錯誤 - (I S)…...

mac开发wordpress/百度经验悬赏令

想要通过程序修改Sketchup的快捷键&#xff0c;API文档没有提供对应的接口&#xff0c;利用从Sketchup快捷键值的存储直接修改实现了&#xff0c;因为2018以及之后的版本快捷键存储位置修改了&#xff0c;做个记录。 Sketchup2018以及之后的版本 2018以及以后的版本快捷键以及…...

酉阳网站建设/软文大全800字

在运行程序的时候&#xff0c;我们一般可以进行run configuration的配置&#xff0c;就比如tomcat源码导入eclipse之后&#xff0c;我们可以发现其运行配置如下&#xff1a; 其中Program arguments配置的元素就是我们传入main方法的字符串数组&#xff0c;而VM arguments其实就…...