matlab - 'resample' 具有相同大小的信号
问题描述
我有 4 个(2 个速率和 2 个时间)信号,我需要均衡它们的大小。我先把它们剪掉,因为我也需要。第一次和速率信号的大小是 3901,另一个是 830。但不仅仅是删除元素,我想保持曲线。我认为我需要插值并尝试“重新采样”,但它并不完美。看起来像照片。我应该如何改进我的代码?任何想法?
index=time >= 9.6 & tsyn <= 13.5; %time boundaries of first time signal
time1=tsyn(index); %first time signal
time_f=resample(time1,830,3901);
Rate1=CLU_YR1(index) %first rate signal
Rate_f=resample(Rate1,830,3901);
index2 = cm.Time.data >= 26.3 & cm.Time.data <= 30.45; %time boundaries of second time signal
time2=cm.Time.data(index2) %second time signal
Rat2=cm.BodySensor_SC1_Omega_B_z.data*(-180/pi) %second rate signal
Rate_p=Rat2(index2)
解决方案
我想你的曲线的一些不匹配源于原始序列在向量末尾不是(接近)0这一事实。从 matlab重采样文档:
过滤时,重采样假定输入序列 x 在给定样本之前和之后都为零。x 端点与零的较大偏差可能导致 y 出现意外值。
最好的选择取决于您接下来要做什么。如果您想拥有一个新的上采样版本(即长度为 3901 的两个信号),您可以查看interp1
,它支持几种不同的方法。如果您选择这样做,请记住,其中的值y(t)
将根据t
您提供的值进行插值。由于您的时间数组似乎没有对齐(一个在 9.6 到 13 秒之间,另一个在 26 到 30 秒之间),您最好按照以下方式进行操作:
y_new = interp1( linspace(1,100,830), rate_p, linspace(1,100,3901), 'linear');
时间数组也是如此。
推荐阅读
- java - java - 如何在java中的一个语句actiolistener中放置2个条件?
- kotlin - 协程范围内的函数未取消
- linux - dnsmasq 的配置,允许将域“搜索”附加到 /etc/resolv.conf
- three.js - 我在使用three.js 碰撞检测时遇到问题
- rust - 根据类型别名使用导入的宏
- linux - Unix:按程序的返回值对“ls”进行排序
- testing - 如何检查 x86 汇编器 AT&T 代码是否正常?
- mysql - 3次尝试后MySQL超慢查询
- python - Python + Selenium - 如何检查使用 CSS 设置样式并显示为内容的图像?
- php - echo $array 与声明键?