matlab中尖号,在Matlab中函數中的一個尖角消除掉
這裏有兩個不同的東西 - 你怎麼發現的急劇轉變,你怎麼過濾。
讓我們依次採取這些。
尖銳過渡的特點是大麴率 - 我們可以通過取輸入曲線的diff來輕鬆檢測到這一點。使用第二個參數= 2需要兩次diff,並導致「類似」二階導數 - 但它被偏移一。所以當我們發現diff(sharkfin,2)很大的點時,我們需要抵消1來得到角點。
接下來,平滑本身。有很多技巧 - 我用一個盒子函數展示一個簡單的卷積。這樣做兩次給出了一個平滑的輸入版本。通過選擇「遠離不連續性」的原始文本和「接近不連續性」的過濾版本,我們得到了你所要求的。如果你願意,你可以「混合」點 - 使用加權版本的過濾和未過濾,取決於你與角點的距離。我沒有表現出明確,但它應該很容易看到如何擴大我已經寫的代碼:
% generate a "shark fin" function:
fin = exp(-linspace(0,4,60));
shark = [fin (1-fin+fin(end))];
shark = repmat(shark, [1 3]);
D2 = diff(shark, 2);
roundMe = find(abs(D2)>0.1*max(D2))+1; % offset by 1 because second derivative
figure;
subplot(3,1,1)
plot(shark); title 'shark plot'
hold on;
plot(roundMe, shark(roundMe),'r*')
legend('input','corners found')
% take N points on either side of the sharp corners:
N = 3;
% boxplot filtered version of the curve
boxFilt = ones(1, 2*N+1)/(2*N+1);
smoothShark1 = convn(shark, boxFilt, 'same'); % box plot
% second filter - smoother
smoothShark2 = convn(smoothShark1, boxFilt, 'same');
% plot the filtered results:
subplot(3,1,2)
plot(shark)
hold on
plot(smoothShark1);
hold on
plot(smoothShark2);
xlim([114 126])
ylim([0.8,1.1])
legend('original','box','box x2')
title 'smoothed everywhere'
% Now apply filtering only to points near the discontinuity
smoothMe = zeros(size(shark));
smoothMe(roundMe)=1;
smoothMe = convn(smoothMe, boxFilt, 'same');
smoothMe(smoothMe>0)=1; % this finds N points on either side of the corner
subplot(3,1,3)
plot(shark)
finalPlot=shark;
hold on
smoothIndx = find(smoothMe);
finalPlot(smoothIndx)=smoothShark2(smoothIndx);
plot(finalPlot,'g')
plot(smoothIndx, finalPlot(smoothIndx), 'r*')
xlim([114 126])
ylim([0.8,1.1])
legend('original','smoothed','changed')
title 'smoothed only near discontinuity'
輸出:
matlab中尖号,在Matlab中函數中的一個尖角消除掉相关推荐
- php 時間比較,PHP用strtotime()函數比較兩個時間的大小實例詳解
在PHP開發中,我們經常會對兩個時間的大小進行判斷,但是,在PHP中,兩個時間是不可以直接進行比較,因為時間是由年.月.日.時.分.秒組成的,所以,如果需要將兩個時間進行比較的話,我們首先要做的就是將 ...
- oracle中sysdate函数 ro,ORACLE常用函數
一.to_date(欄位(字符串),格式)函數: 將字符串轉換成指定格式的date數據類型 例子: to_date('2017/11/29','yyyy/MM/dd') 二.to_char(欄位(日期 ...
- python中等于号可以用is代替_python中is与双等于号“==”的区别示例详解
前言 在开始本文之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识).python type()(数据类型)和value(值).is和==都是对对象进行比较判断作用的,但对对 ...
- python中等于号可以用is代替_python中字符串比较使用is、==和cmp()总结
经常写 shell 脚本知道,字符串判断可以用 =,!= 数字的判断是 -eq,-ne 等,但是 Python 确不是这样子的. 所以作为慢慢要转换到用 Python 写脚本,这些基本的东西必须要掌握 ...
- mysql 中有行号吗_重置SQLite3 / MySQL中的行号计数
sqlite的 使用: DELETE FROM your_table; DELETE FROM sqlite_sequence WHERE name = 'your_table'; sqlite ke ...
- matlab+awgn和wgn,噪聲強度(噪聲功率) 噪聲方差到底有什么關系? matlab中的awgn函數...
以matlab中awgn函數為例說明: 在matlab中無論是wgn還是awgn函數,實質都是由randn函數產生的噪聲.即:wgn函數中調用了randn函數,而awgn函數中調用了wgn函數. 根據 ...
- matlab工具函数newp,常用的 MATLAB 神經網絡工具箱函數
列表中所列出的函數適用於 MATLAB5.3 以上版本,若需要進一步的了解,請參閱 MATLAB 的幫助文檔. 1. 網絡創建函數 newp 創建感知器網絡 newlind 設計一線性層 ne ...
- newff matlab使用例子,matlab神經網絡newff函數的用法
設[P,T]是訓練樣本,[X,Y]是測試樣本: net=newrb(P,T,err_goal,spread); %建立網絡 q=sim(net,p); e=q-T; plot(p,q); %畫訓練誤差 ...
- java中random的头文件_JAVA中的Random()函數
Java中存在着兩種Random函數: 一.java.lang.Math.Random; 調用這個Math.Random()函數能夠返回帶正號的double值,該值大於等於0.0且小於1.0,即取值范 ...
最新文章
- python入门指南 许半仙txt百度云-《剑有话说》TXT全本 百度云网盘下载 by一刀绣春...
- 用cmake编译caffe
- 头发一周洗几次才适宜? - 生活至上,美容至尚!
- git 清空所有commit记录
- 高性能MySQL-3rd-(六)查询性能优化
- [mybatis]映射文件_参数处理_#和$取值区别
- UE4 FBX静态网格物体通道
- 本地开发时同时启动多个tomcat服务器
- Linux之find xargs
- manacher算法--最长回文子串
- 解压rootfs.img根文件系统
- 72. 少用 iframe
- 机器学习笔记(一):机器的学习定义、导数和最小二乘 | 凌云时刻
- angularJs完成分页
- TA505武器之隐形电子邮件窃取器
- 计算机的管理员在那,win10系统administrator管理员在哪
- 什么是数据库分组查询(详解)
- Git月嫂级安装步骤
- JavaScript中的name和classname有什么区别
- 【python爬虫专项(19)】blibli弹幕数据爬取(以全站搜索蔡徐坤的视频为例)
热门文章
- 输入三角形三边长,求三角形面积
- 解决linux的-bash: ./xx: Permission denied/tensorflow 运行cpu还是gpu的方法
- 计算机的运作流程的个人感想
- MySQL数据库教程天花板,mysql安装到mysql高级,强|硬
- java常见的设计模式
- Windows下的你画我猜 -- 告别效率低下的目录扫描方法
- 个人免签码支付源码|服务监控模块强大后台功能全面
- Android studio gradle编译失败问题汇总
- android画cci指标代码,大智慧CCI画线指标源码 副图公式
- cjk-ext-e 字体