2019武大国重考研地理信息(GIS,资源与环境)复试上机题目分享
2019武大国重考研地理信息系统专硕(测绘工程/资源与环境)(GIS)复试上机题目分享
目录
- 2019武大国重考研地理信息系统专硕(测绘工程/资源与环境)(GIS)复试上机题目分享
- 1.前言
- 2.题目要求
- 3.新旧思路
- 3.1旧思路
- 3.2新思路
- 4. 总结
- 5.全部代码
1.前言
有天晚上睡不着,突然想起来考研复试上机的题目到现在都没解决,于是开始回忆当时的解法,并思考新的思路。想不到的是很快有了一个自己认为还不错的方案,起码相对于当时的解法。在此记录。
2.题目要求
原题目要求用C语言实现均值滤波算法,已经给出的是整个项目工程,其中函数,头文件,数据都已经写好了(数据是一个8×8的二维数组),用VS打开可以直接运行。我们需要做的就是在两个函数里面填代码实现功能。第一个函数实现模板为3×3的均值滤波,第二个则进行通用化,实现n*n大小的均值滤波。
个人认为题目还是比较简单的,只要会基础的C语法,把思路描述出来就好了。甚至只写注释都是会给分的,下来之后分数也普遍偏高,所以你懂的,并不是越好的学校会越为难大家。
3.新旧思路
3.1旧思路
考虑到对数据中间部分和边界滤波是不同的,因为中间的一部分可以直接查找周围的数值求和并平均,而边界上的值是缺的,比如第一行数据缺了上面的一行,最后一行缺了最下面一行。其中每一行列的情况也不同,以8×8数组为例,(0,0)和(0,7)一个左边缺一个右边缺。所以对数据分情况讨论。大概分成最中间部分 + 4个顶点 + 4条边界 9部分,依据每一类的不同情况计算相应的和。
这种思路还是比较复杂的,当时两个小时3×3模板的基本做完了,N×N模板的只做了一半,因为没时间了。
3.2新思路
考虑到均值滤波在边界处需要进行填充后操作,突然想到如果填充成一个新的数组,即把边界扩充,原数组的大小正好是现数组可以直接进行求和的大小,在这个数组上进行操作,那不是就不用分情况了!
为了方便理解,我放出原始数组和扩充后的数组图片。这里边界全部是0,还没有填充,可以直观对比。
下一步就是对边界填充实际数值了,这也是有点麻烦的一步。如果是边界0填充的方式,那就简单很多了,省下一半工作。而现在使用最邻近边填充的话,仍然需要分情况对其赋值。这里就不展开讲了,主要是分上下左右4种情况,具体看最后的代码吧
4. 总结
这个小代码还是很有趣的,对我来说有点意义。如果能帮到其他人就更好了大佬们有其他意见欢迎指点!目前没有优化,有些地方是不够简洁的。另外,还没有参考网上其他人的解决方案,等后面再补充。
5.全部代码
import numpy as np# 创建一个数组,用来进行均值滤波
n = 8
arr = np.zeros((n, n))
for i in range(n):for j in range(n):arr[i, j] = i + j*j
print('原数组----------')
print(arr)# 均值滤波算法。array为计算的数组,d为滤波模板的长度(d*d),d为奇数
def filtering(array, d):# 首先对原始数组进行扩充,以相邻边的值填充边界new_arr = np.zeros((len(array)+int(d/2)*2, len(array)+int(d/2)*2))# 对新数组赋值,把中间部分赋予原数组的值for s in range(int(d/2), len(array)+int(d/2)):for t in range(int(d/2), len(array)+int(d/2)):new_arr[s, t] = array[s-int(d/2), t-int(d/2)]print('原始数据赋值后的数组')print(new_arr)# 对新数组的最外围4个填充边界进行边界填充# 上边界new_arr[0:int(d/2), int(d/2):len(array)+int(d/2)] = new_arr[int(d/2), int(d/2):len(array)+int(d/2)]# 下边界new_arr[int(d / 2)+len(array):, int(d / 2):len(array) + int(d / 2)] = new_arr[len(array)+int(d/2)-1,int(d / 2):len(array) + int(d / 2)]# 左边界for k in range(0, int(d/2)):new_arr[:, k] = new_arr[:, int(d / 2)]# 右边界for p in range(int(d / 2)+len(array), int(d / 2)+len(array)+int(d/2)):new_arr[:, p] = new_arr[:, len(array)+int(d/2)-1]print('边界填充后的数组----------')print(new_arr)# 赋值好后,可以计算# 建立一个新的数组,存放滤波后的值new_arr2 = np.zeros((len(array)+int(d/2)*2, len(array)+int(d/2)*2))for x in range(int(d/2), len(array)+int(d/2)):for y in range(int(d/2), len(array)+int(d/2)):value = 0for x2 in range(x-int(d/2), x+int(d/2)+1):for y2 in range(y-int(d/2), y+int(d/2)+1):value = value + new_arr[x2, y2]value = value / d / d# value = (new_arr[x-1, y-1] + new_arr[x-1, y] + new_arr[x-1, y+1] + new_arr[x, y-1]# + new_arr[x, y] + new_arr[x, y+1] + new_arr[x+1, y-1] + new_arr[x+1, y] +# new_arr[x+1, y+1]) / d / dnew_arr2[x, y] = round(value, 2)print(new_arr2)array = new_arr2[int(d/2):int(d/2)+len(array), int(d/2):int(d/2)+len(array)]print('结果:----------')print(array)return arrayfiltering(arr, 5)
2019武大国重考研地理信息(GIS,资源与环境)复试上机题目分享相关推荐
- 2019武大计算机考研,2019武大中哲考研经验分享
历经一年的千锤百炼,如愿考上武汉大学中国哲学专业.深感考研的迷茫与艰辛,愿通过本文分享此次考研的经验,帮助还在研路上的你.本文仅为经验之谈,有不足之处还望海涵. 一.如何选择学校 以及2019武大中哲 ...
- 东北大学2019年计算机专业,2019年东北大学计算机考研经验贴,复试篇
2019年东北大学计算机考研经验贴,复试篇 东北大学 发布于2019年9月23日 01:42 阅读数 5043 今年报考东大的人数很多,优秀的人太多,所以东大也很人性化的扩招了.我初试的专业排名其实在 ...
- 南京理工大学计算机上机,南京理工大学考研计算机复试上机题目.doc
南京理工大学考研计算机复试上机题目 三是近几年的南理上机题, 年上机题) (一.二.三是近几年的南理上机题,四是 09 年上机题) <一> 一 1. 从键盘输入一个带有数字的字符串,将其中 ...
- 2022 GIS保研面试:武大国重、资环、中科院空天院;地信GIS专业/遥感专业保研夏令营面试、预推免面试
目录 夏令营 ×2 预推免 ×2 面试遇到的提问问题(以ABCD标识代表院校) 尾声 面试学校:中科院空天院/中科院精测院/武大资环学院/武大测绘遥感国重实验室 我夏令营参加了空天院与精测院,预推免则 ...
- 2019年北邮网研院复试上机题目
题目来源: 北邮2019网络安全学业&网络研究学院机试复试回忆版 今年网研上机白送,菜鸡如我,未能4A. 还是转一下题目,完善一下博客.因为代码在考场上A过了,这里就不贴代码了. 2019.网 ...
- 2019年北邮计算机院复试上机题目
题目来源:北邮2019计算机院机试真题回忆版 2019.计算机院.Problem A 二进制 题目描述 32位二进制数X,对其进行X+1,X+3 操作,并输出.注意不能忽略前导0.(x<=232 ...
- 小心被举报!考研复试后不要分享考试内容!
部分内容来源于 研招网 很多同学考研的时候会加一些群,在群里分享复习经验,或者吹水聊天.加个考研群还是有帮助的,不仅能够或者一些知识和经验,有时候还能得到别人分享的资料(真题或者笔记等),而且能让我们 ...
- 武大遥感国重是一个什么样的存在?值得去读吗?
写在前面 "珞珈山下,东海之滨,桃李不言,下自成蹊"说的就是武汉大学啦~在武汉大学里有一个特殊的学院--测绘遥感信息工程国家重点实验室(以下简称武大测国重),以全国顶尖的遥感技术而 ...
- 网络技能大赛-2019年国赛真题[2019年全国职业技能大赛高职组计算机网络应用赛项真题-H卷]路由交换部分答案详解
网络技能大赛-2019年国赛真题[2019年全国职业技能大赛高职组计算机网络应用赛项真题-H卷]路由交换部分答案详解 2022年全国职业技能大赛网络系统管理赛项相较2021年再次做出改动,Linux部 ...
最新文章
- mysql cmd终端服务无法启动
- 判断用户是否存在再进行新增_4招教你判断抖音真假粉,快速分辨抖音号的真实度!...
- java数据类型划分_一张图搞定java数据类型的划分
- .so 依赖目录 cmake_cmake浅析
- wxWidgets:wxURI类用法
- Apache Doris : 一个开源 MPP 数据库的架构与实践
- android web3j 代币查询_Android通过web3j以太坊智能合约交互
- Python爬虫 ---(1)爬虫基础知识
- Maven项目出现web.xml is missing and 《failOnMissingWebXml》is set to true,已解决
- warning LNK4070的解决办法
- linux中 ECShop的文件不能写
- python 函数篇(2)
- 【重磅】这家技术贼牛的开源公司开始狂招人啦!
- NC单据模板公式使用
- Echart柱状图数值显示
- 明朝取代元朝鲜为人知的秘密
- 攻防世界web做题步骤
- 初学盲打,免费,免安装,高颜值的在线打字练习网站
- Siege——多线程编程最佳实例
- 一个APP的开发流程
热门文章
- 私有云搭建:基于OpenStack 但不止于OpenStack
- stm32h750电路_基于STM32H750的开发板,可用于评估,学习和开发
- python框架-web2py
- linux git服务器搭建端口号是多少,Linux 环境 搭建Git 服务器,并且修改SSH端口使用...
- 二进制负数的一些问题
- 第二期:空间数据库管理工具arccatalog基础
- 4键电子手表说明书_电子手表那种四个按键的,怎么调时间?
- 负载均衡篇-LVS引出的网络知识:NAT、内网穿透及P2P
- 污水,中水处理plc控制系统
- 人脸对齐之GBDT(ERT)算法解读