Matlab 实用代码集
本博客将存放一些常用的Matlab代码片段,整理成博客,并持续更新,以便写代码可以调用。
1、函数多输入多输出
Matlab写函数的时候,输入输出个数经常是不固定的,
narginchk(1,3); %输入参数个数必须是1-3个,否则宝座
nargoutchk(0,1); %输出参数个数必须是0-2个,否则报错
% 不同输入个数参数情况
if nargin == 1Var2=2; % 无第二个参数输入,则第二个入参赋值
end
实例:可以参考我的博客《利用matlab实现SAR 图像线性拉伸显示》https://blog.csdn.net/weixin_41649786/article/details/118404909?spm=1001.2014.3001.5501
2、图片去掉黑边(空值)
遥感图像中,经常会有NAN值,显示的时候会有黑边,影响美观
clear;close all;clc;
Image = imread('D:\Code\Matlab\遥感图像变化检测\Area\202201121.tif');
Image(Image<0) = nan;
him = imshow(Image);
set(him, 'AlphaData', ~isnan(Image))
3、数据进行对数-归一化
有的数据需要显示出更好的效果,需要对数据进行先对数,然后归一化。例如SAR图像散射值大的能达到2^16=65536,直接看图片是一片黑,因此需要调亮暗部细节。
InImage(InImage < 0) = NaN;
Image = 10*log10(InImage);
%% 第一种
Value_max = max(Image(:));
Value_min = min(Image(:));
% 像素归一化
OutImage = uint8((255/(Value_max-Value_min))*Image); %图像(像素)归一化
也可以用拉伸显示的方式进行显示, 可以参考我的博客《利用matlab实现SAR 图像线性拉伸显示》https://blog.csdn.net/weixin_41649786/article/details/118404909?spm=1001.2014.3001.5501
4、经纬度坐标数据类型转换
经纬度坐标有两种形式保存:一种是度度度(小数形式,例如117.649)形式的数据,一种是度分秒(117-38-57.98东、117-38-57.98E)形式的数据,因此经常需要将两种数据进行转换。
第一种:度度度转化为度分秒,核心:度数=取整,分数=取整((值-度数)*60),秒数=((值-度数)*60-分数)*60
Str = abs(Str); % 排除负号的影响
degree = fix(Str); % 度
minute = fix((Str-degree)*60); % 分
second = ((Str-degree)*60-minute)*60; % 秒
第二种:度分秒转化为度度度,核心:度分秒=度+分/60+秒/3600=度
second = str2double(Str(temp1(2)+1:Leng)); %秒"
minute = str2double(Str(temp1(1)+1:temp1(2)-1)); %分'
degree = str2double(Str(1:temp1(1)-1)); %度°
coor = PN*(((second/60)+minute)/60+degree); %经纬度(十进制)
5、计算N天前(后)的日期
day1 = datetime(datestr(now,'yyyy-mm-dd'))+caldays(1) % 明天day0 = datetime(datestr(now,'yyyy-mm-dd')) % 今天day_1 = datetime(datestr(now,'yyyy-mm-dd'))-caldays(1) % 昨天
6、人机交互选取数据
弹出文件选择框,选择想要的数据
% 选择需要处理的tif文件
[FileName,PathName,index] = uigetfile({'*.shp'},'tif文件读取','MultiSelect','on');
% 判断是或选择
7、颜色替换
替换图片中的某一种(类)的颜色,可以参考我的博客《利用Matlab替换图片部分颜色》https://blog.csdn.net/weixin_41649786/article/details/125291724?spm=1001.2014.3001.5501,
image = imread('测试.JPG'); % 读取图像
figure('Name','原图')
imshow(image); % 显示
R = image(:,:,1); % 红色
G = image(:,:,2); % 绿色
B = image(:,:,3); % 蓝色index = find(R<20 & G<20 & B<20); % 索引,找出被替换颜色的范围
R(index) = 255; % 红色通道赋值
G(index) = 255; % 绿色通道赋值
B(index) = 255; % 蓝色通道赋值
Out_Image(:,:,1) = R; % 输出图像红色通道
Out_Image(:,:,2) = G; % 输出图像绿色通道
Out_Image(:,:,3) = B; % 输出图像蓝色通道
9. 图片添加地理信息
给图片添加地理信息需要用到:GeographicCellsReference、GeographicPostingsReference、MapCellsReference、MapPostingsReference等其中的某一个类(对象),通过创建这些类(对象),来生成包含地理信息的R,代码如下:
% Read a JPEG image from a file.
Image = imread('_J6A5783.JPG');
% 定义图片经纬度范围
lonlim = [-20 20]; % 经度范围[max min]
latlim = [-10 10]; % 纬度范围[max min]
rasterSize = size(Image); % 栅格(图片、数据)大小(行、列)
R = georefcells(latlim,lonlim,rasterSize,'ColumnsStartFrom','north');
% R.RowsStartFrom = 'east'% 生成Geotiff文件
filename = 'Geo-Hlz' + ".tif";
geotiffwrite(filename, Image, R)
% 创建地图并显示数据
figure('Name','效果图')
usamap(Image,R)
geoshow(filename)
10. 数据可视化(3D、4D)
例如:经度、纬度、高度以及数量,利用不同颜色表示不同数据;
close all;clear;clc;long =[120 121 122 119 118 115 130 129 128 127]; %经度
lat =[ 60 61 60 59 57 56 55 61 68 64]; %维度
Hight =[ 12 15 16 17 11 15 15 19 9 21]; %高度
Num =[ 1 2 5 3 4 6 1 0 8 4]; %数量figure('Name','3D数据可视化')
scatter(long,lat,40,Num,'filled');
ax=gca;
ax.XDir='reverse';
%view(-31,14)
xlabel('经度')
ylabel('维度')
zlabel('高程/m')
cb=colorbar;
cb.Label.String='人数/人';figure('Name','4D数据可视化')
scatter3(long,lat,Hight,40,Num,'filled')
ax=gca;
ax.XDir='reverse';
view(-31,14)
xlabel('经度')
ylabel('维度')
zlabel('高程/m')
cb=colorbar;
cb.Label.String='人数/人';
Matlab 实用代码集相关推荐
- 做网页很实用代码集合和CSS制作网页小技巧整理
做网页很实用代码集合 控制横向和纵向滚动条的显隐?<body style="overflow-y:hidden"> 去掉x轴 <body style=" ...
- Matlab实用代码——直方图的绘制并在单个直方图上标注对应数字
内容:绘制误差分布直方图,并在每个直方图上方显示对应数字.此外,返回一个数据表,该表是真实值.估计值.相对误差的统计. 代码连接:http://download.csdn.net/download/c ...
- Matlab实用代码——定位文件位置,自动导入文件
代码功能: 1.弹出文件夹选择对话框,选择文件所在位置. 2.加载指定名称文件. 例子: 加载NASA锂电池数据集,文件为B0005.B0006.B0007.B0018. 每个文件下面都是一个同名的结 ...
- iOS开发中经常用的实用代码合集
iOS开发中经常用的实用代码合集 本文整理了,在iOS开发中我们所遇到一些开发问题的技巧类的代码,让你在开发过程中避免了很多弯路,希望能给你的开发带来帮助和启发. 1.判断邮箱格式是否正确的代码: / ...
- Python 实用代码工具集目录
Python 实用代码工具集目录 1.批量重命名文件 2.视频转图片 3.图片转视频 4.图像灰度处理.图像合并(hstack) 1.批量重命名文件 链接1: 批量重命名文件 2.视频转图片 链接2: ...
- MATLAB对于自控题目的解答实用代码
MATLAB对于自控题目的解答实用代码 一.基础运算 a=det(A);//行列式 b=inv(A);//求逆 c=rank(A);//秩 [x,y]=eig(A);//x为特征向量,y为特征值 fo ...
- 这也太狠了吧!500套Java实用代码,不论工作学习都能用到!
资源来自网络,如侵权请告知博主删除. 作为一个程序员,随着工作时间的增加,慢慢就会有自己的一个代码库,不管是编程的工具,或者是一个拿来用改造的项目,或者说是学习用的,总之,这样的一个库必不可少,给大家 ...
- 机器学习实用代码汇总(你想要的这里都有)
机器学习实用代码汇总(你想要的这里都有) 文章目录 机器学习实用代码汇总(你想要的这里都有) 前言 一.数据导入 1.数据文件读取 2.提取特征和标签 3.数据分布及关系图(ProfileReport ...
- 数学建模算法汇总(全网最全,含matlab案例代码)
数学建模常用的算法分类 全国大学生数学建模竞赛中,常见的算法模型有以下30种: 最小二乘法 数值分析方法 图论算法 线性规划 整数规划 动态规划 贪心算法 分支定界法 蒙特卡洛方法 随机游走算法 遗传 ...
最新文章
- Android Gradle基础实践
- 湖南工大计算机专业咋样,西北工业大学还是湖南大学计算机
- Databricks基本操作
- python代码评测结果tle_Python的备忘细节小抄
- 怎么才能判断一个产品用户体验的好坏?
- Smalidea无源码调试 android 应用
- mxnet基础到提高(11)--循环
- MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
- jMeter CSV Data set config 的 sharing mode 和 Thread group loop 配合使用
- redis慢查询日志,php安装redis扩展,redis存储session,redis主从配置
- python文件转换为pyd
- 1102: 韩信点兵
- 般若波罗蜜多心经-梵文(收藏)
- 投稿开奖丨“轻量应用服务器”征文活动阳光普照奖(8月)开奖啦
- Microsoft Office word 2019教程 - word中的excel表格随着excel表格的变化而变化
- ppt密码忘记了怎样能打开文档,ppt权限密码如何解开?
- MuMu模拟器是干什么用的?MuMu模拟器Mac版对电脑配置要求是什么?
- 牛屎芯片 | 硬件之家
- LeetCode 904. 水果成篮【fruit-into-baskets】
- Chapter1 Vue基础