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

基础大概回顾

基础大概回顾


参考文献:Matlab GUI设计入门与实战


1.一维数据插值

interp1()函数,用于一维插值,其常用的插值方式如下:

1.1 nearest(最邻近插值)

在插值节点的近邻区域内取函数值,该插值函数是一个阶梯函数,即:

 

%% nearest
clc,clear,close all  % 清理命令区、清理工作区、关闭显示图形
warning off       % 消除警告
feature jit off      % 加速代码运行
x = [1:10];
y = [1, 1, 7, 4, 0, 6, 3, 0, 8, 7];
figure('color',[1,1,1])
hold on
plot(x,y,'o--','linewidth',2)  % 原数图形
xi = 1:0.1:10;
yi = interp1(x,y,xi,'nearest');
hold on
grid on
plot(xi,yi,'r*--','linewidth',2)  % 原数图形
xlabel('x');  ylabel('y');  
legend('原始数据','nearest插值')

1.2 linear(分段线性插值)

在每个小区间上采用简单的线性插值,在实际计算中,处理速度快,但是对海量数据本身以及非线性问题,处理误差大,线性插值获得的曲线不够平滑。

x = [1:10];
y = [1, 1, 7, 4, 0, 6, 3, 0, 8, 7];
xi = 1:0.1:10;
yi = interp1(x,y,xi);

1.3 spline(三次样条插值)

在每个分段内构造一个三次多项式,使其插值函数满足插值条件外,还要求每个节点处有光滑的条件(导数存在)。

x = [1:10];
y = [1, 1, 7, 4, 0, 6, 3, 0, 8, 7];
xi = 1:0.1:10;
yi = interp1(x,y,xi,'spline');

1.4 pchip(分段立方插值)

将插值的数据分段,针对每一段采用立方插值的方法进行拟合逼近

x = [1:10];
y = [1, 1, 7, 4, 0, 6, 3, 0, 8, 7];
xi = 1:0.1:10;
yi = interp1(x,y,xi,'pchip');

1.5 cubic(立方插值)

精度较高,插值曲线较平滑。

x = [1:10];
y = [1, 1, 7, 4, 0, 6, 3, 0, 8, 7];
xi = 1:0.1:10;
yi = interp1(x,y,xi,'cubic');

2.二维数据插值

griddata根据数据表[x,y,z],用不同的算法计算[xi,yi]各点上的函数近似值zi。

2.1 nearest(最近邻值)

x = [1:10];
y = [0, 0, 1, 1, 3, 4, 6, 7, 7, 8];
z = [8, 2, 8, 0, 3, 7, 8, 2, 4, 1];
Z = z'*ones(1,length(x));
xi = min(x):(max(x)-min(x))/50:max(x);  % 插值数据
yi = min(y):(max(y)-min(y))/50:max(y);  % 插值数据
yi = yi'; % 转置
Zi = griddata(x,y,Z,xi,yi,'nearest');   % 插值
mesh(xi,yi,Zi)

2.2 linear(线性插值)

Zi = griddata(x,y,Z,xi,yi,'linear');   % 插值

2.3 cubic插值

Zi = griddata(x,y,Z,xi,yi,'cubic');   % 插值

3.数据拟合

3.1 多项式最小二乘法

最小二次法拟合函数ployfit()

x = [1:10];
y = [8, 2, 8, 0, 3, 7, 8, 2, 4, 1];
p = polyfit(x,y,7); % 7次多项式
yc = p(1)*x.^7 + p(2)*x.^6+ p(3)*x.^5 + p(4)*x.^4 + p(5)*x.^3 + p(6)*x.^2 +...
p(7)*x.^1 + p(8)*x.^0;

3.2非线性拟合

函数lsqcurvefit()

4.选定区域处理

4.1 roicolor()函数

根据颜色选定区域,BW=roicolor(A,low,high),色图范围[low,high],返回这些像素选择区域。BW为内部值为1,外边为0的矩阵

obj=imread('ps.png');
obj=rgb2gray(obj);
load woman;          % 加载MATALB自带图像对应的MAP值
BW=roicolor(obj,120,200); %抠图
figure,imshow(obj,map);
figure,imshow(BW);

4.2 roipoly函数

roipoly(I),为图像I生成交互式的处理界面;
roipoly(I,c,r),用向量c,r指定多边形的各点坐标。

obj=imread('psb.png');
r=obj(:,:,1);
g=obj(:,:,2);
b=obj(:,:,3);
c=[314 272 199 135 175 276];  %横坐标
r1=[163,268,276,171,43,32];   %纵坐标
BW=roipoly(obj,c,r1);         %抠图
r1=immultiply(r,BW);          %交运算
g1=immultiply(g,BW);
b1=immultiply(b,BW);
obj2=cat(3,r1,g1,b1);         %合成RGB图像
subplot(121),imshow(obj);
subplot(122),imshow(obj2);

转载于:https://www.cnblogs.com/boyiliushui/p/7743844.html

相关文章:

  • 重新学习Mysql数据库3:Mysql存储引擎与数据存储原理
  • P1679 神奇的四次方数
  • nginx服务企业应用
  • Hadoop起源
  • HDU2255 奔小康赚大钱 【KM算法】
  • RxJava简介与入门(一)
  • 手把手教你用1行命令实现人脸识别
  • 【编程之美】字符串移位包含的问题(续)
  • 前端同学大福利,最全的面试题目整理
  • 随机ID添加
  • 新概念英语(1-115)Knock! Knock!
  • Python 数据结构
  • CTF---密码学入门第七题 杯酒人生
  • Wireshark在Windows 7无法正常运行
  • 优势独显,机会点亮,2017义乌装博会下月启幕
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Asm.js的简单介绍
  • CODING 缺陷管理功能正式开始公测
  • ES6核心特性
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • ES学习笔记(12)--Symbol
  • golang 发送GET和POST示例
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java|序列化异常StreamCorruptedException的解决方法
  • Java教程_软件开发基础
  • Java-详解HashMap
  • JS变量作用域
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • python_bomb----数据类型总结
  • 程序员最讨厌的9句话,你可有补充?
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 使用权重正则化较少模型过拟合
  • 树莓派 - 使用须知
  • 微信小程序--------语音识别(前端自己也能玩)
  • 用Visual Studio开发以太坊智能合约
  • 关于Android全面屏虚拟导航栏的适配总结
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • #if 1...#endif
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (C语言)字符分类函数
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (十六)一篇文章学会Java的常用API
  • (一)Java算法:二分查找
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • ******之网络***——物理***
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .net 程序发生了一个不可捕获的异常
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET6 开发一个检查某些状态持续多长时间的类
  • []FET-430SIM508 研究日志 11.3.31
  • [2]十道算法题【Java实现】