【MATLAB】自学记录之基于某楼栋房价数据绘制三维网格图

news/2025/1/23 20:54:15/文章来源:https://www.cnblogs.com/fantasyboyce/p/18673693

1. 前言

基于某小区某一楼栋各个户型及楼层之间对应的出售价格表,通过MATLAB脚本进行读取解析,并绘制成三维网格图,从而能够直观地以可视化的角度观察户型位置(东边户、西边户、中间连廊户)、楼层位置(高中低楼层)等因素是否与出售价格存在一定的影响关系。


2. 预置条件

序号 配置项 说明
1 某楼栋出售价格表 存储了各楼层及各户型对应的房价数据文件,以xlsx或txt格式进行存储
2 MATLAB 2023b

3. 步骤记录

  1. 将文件放置在当前文件夹下,与MATLAB代码文件保持同一层级,文件内容示例如下。

某楼栋房价示例数据文件

  1. 使用readtable函数读取xlsx文件,或用load命令直接加载txt文件。此时priceData变量的数据类型是30*4的double类型的二维矩阵。

    设定该楼栋为4户型30层。

    % 读取xlsx文件,并转换成double类型的二维矩阵
    priceData = table2array(readtable('priceData.xlsx'));
    % 读取txt文件,MATLAB将自动以文件名作为变量名称,存储文件中的数据
    load priceData.txt;
    
  2. 根据priceData矩阵的维度,分别生成户型行向量和楼层行向量。

    priceData矩阵存储的数据中,行数为楼层,列数为户型。

    rooms = 1:size(data, 2);
    floors = 1:size(data, 1);
    
  3. 对户型和楼层生成二维网格矩阵,此时rooms和floors矩阵的维度均变成了30*4,且与priceData矩阵保持一致。

    [room_1, floor_1] = meshgrid(rooms, floors);
    
  4. 通过mesh函数绘制并渲染三维网格图,效果如下。

    三维网格图

    figure;
    mesh(rooms, floors, priceData);
    xlabel("户型");
    ylabel("楼层");
    zlabel("单价");
    grid on;
    

4. 数据插值优化

通过观察以上生成的三维网格图,可基本看出楼层、户型与价格的影响关系。如:底顶楼层的价格相对较低;其他楼层中,每隔几层楼就出现一次价格较低的楼层;同一楼层中不同户型位置价格变化不大,整体上西边户(01户)的出售价格相较于其他户型来说是偏低的。
但是,由于楼层仅有30层,相邻楼层之间的连线较为生硬,希望通过平滑曲线来展示同一户型不同楼层的价格影响趋势,这就需要将楼层以及出售价格等数据进行精细化处理,处理步骤如下。

  1. 分别对户型行向量和楼层行向量进行精细化处理,此时户型和楼层行向量的长度可通过如下公式计算。

    \[\mathit{ \left\{\begin{matrix} Len_{room\_itp} =\frac{size(rooms,2) - 1}{0.05} + 1\\ Len_{floor\_itp} =\frac{size(floors,2) - 1}{0.05} + 1 \end{matrix}\right.} \]

    room_itp = 1:0.05:size(rooms,2);
    floor_itp = 1:0.05:size(floors, 2);
    
  2. 对户型和楼层重新生成二维网格矩阵,大小为\(Len_{floor\_itp}\times Len_{room\_itp}\)

    [room_1, floor_1] = meshgrid(room_itp, floor_itp);
    
  3. 再利用MATLAB中的interp2函数,对出售价格进行插值计算。

    其中,插值方式采用cubic(三次插值)方法。

    prices = interp2(rooms, floors, priceData, room_1, floor_1, 'cubic');
    
  4. 再次通过mesh函数绘制并渲染三维网格图,效果如下。

三维网格图-插值处理后

figure;
mesh(room_1, floor_1, prices);xlabel("户型");
ylabel("楼层");
zlabel("单价");
grid on;

5. 完整代码

clc;clear;
file = './priceData.xlsx';priceData = table2array(readtable(file));rooms = 1:size(priceData, 2);
floors = 1:size(priceData, 1);% 对户型、楼层做插值
room_itp = 1:0.05:size(rooms,2);
floor_itp = 1:0.05:size(floors, 2);[room_1, floor_1] = meshgrid(room_itp, floor_itp);prices = interp2(rooms, floors, priceData, room_1, floor_1, 'cubic');
figure;
mesh(room_1, floor_1, prices);xlabel("户型");
ylabel("楼层");
zlabel("单价");
grid on;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/869772.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前端】谈谈水印实现的几种方式

遇到问题 日常工作中,经常会遇到很多敏感的数据,为防止数据的泄露,我们要在数据上做一些”包装“。目的就是让那些有心泄露数据的”不法分子“迫于严重的”舆论压力“而放弃不法行为,使之”犯罪未遂“,达到不战而屈人之兵的效果。而在安全部门工作的我们,数据安全的观念早…

插头DP记录

关于插头dp。AAA黑题批发。 这个东西好像设问还挺广泛的,做到哪写到哪吧。 得先了解一下轮廓线dp定义。 概念 设问广泛但是总体来说是连通性相关状压dp的一类设计方法。 骨牌覆盖问题 比如说,最简单的,问你 \(n*m\) 的棋盘格里能放多少 \(1*2\) 的骨牌。 考虑把一个节点分为…

03_LaTeX之文档元素

在知道了如何输入文字后,在本章了解一个结构化的文档所依赖的各种元素——章节、目录、列表、图表、交叉引用、脚注等等。目录03_\(\LaTeX{}\) 之文档元素章节和目录章节标题目录文档结构的划分标题页交叉引用脚注和边注特殊环境列表对齐环境引用环境摘要环境代码环境表格列格…

THREE.js学习笔记6——Geometries

这一小节学习THREE.js中的物理模型。 什么是geometry?(英文解释,翻译为中文就看不懂了,直接看英语吧)Composed of vertices (point coordinates in 3D spaces)and faces (triangles that join those vertices to create a surface) Can be used for meshes but also for par…

第三节 回归实战

数据处理超参:人为指定不能改变测试数据只有x没有标签y 训练数据拆分,82开,作训练集和验证集(验证模型好坏),模型训练不是一路上升的过程,训练几次验证一次,最好的模型save下来 one-hot独热编码 猪(1 0 0) 狗(0 1 0) 猫(0 0 1) def get_feature_importance(feature_data, label…

Windows git bash 文字显示/斜杠开头数字

前言全局说明Windows git bash 文字显示/斜杠开头数字一、说明 详细介绍:https://zhuanlan.zhihu.com/p/133706032二、问题三、解决方法 git config --global core.quotepath false免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。参考、来源: h…

DDR 带宽的计算与监控

DDR 带宽(Double Data Rate Bandwidth)是指 DDR 内存在一秒内可以传输的数据量,通常以 GB/s(Gigabytes per second) 为单位。它是衡量内存系统性能的重要指标,直接影响系统的数据吞吐能力。 1.如何计算 DDR 带宽 计算 DDR 理论带宽的公式为: DDR主频 * 位宽 = 理论带宽其…

1.15

尽力了,之前的粗心导致现在要改很多以前的坑,明天再继续

中考英语优秀范文-热点话题-传统文化-006 Welcome to Chinese Summer Camp 欢迎参加中国夏令营

1 写作要求 假定你是李华,你校今年暑假将为外国学生举办一场汉语夏令营活动(Chinese Summer Camp)。请你根据下面海报的内容,用英语给你的笔友David写一封电子邮件,介绍本次活动并邀请他参加。词数80左右。 Welcome to Chinese Summer Camp Time:July 18th—July 28th, 2…

机器人

本文来自博客园,作者:Traktorea,转载请注明原文链接:https://www.cnblogs.com/kdsmyhome/p/18673586

使用Nginx实现前端映射到公网IP后端内网不映射公网.250115

一、场景: 系统移动端需要映射到公网,但是后端地址不能映射出去 qbpm.xxxx.cn 系统解析内网IP qmbpm.xxxx.cn 移动端解析公网IP 二、思路: 移动端前端公网端口放出80 443端口 移动端后端映射到内网后端地址qbpm.xxxx.cn:8443 三、解决方法: vim nginx.confserver {listen 8…

Qml 中实现任意角为圆角的矩形

在 Qml 中,矩形(Rectangle)是最常用的元素之一。 然而,标准的矩形元素仅允许设置统一的圆角半径。 在实际开发中,我们经常需要更灵活的圆角设置,例如只对某些角进行圆角处理,或者设置不同角的圆角半径。 本文将介绍如何通过自定义 Qml 元素实现一个任意角可为圆角的矩形…