我是靠谱客的博主 彩色斑马,最近开发中收集的这篇文章主要介绍信号处理入门之旅内容速览,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

内容速览

readmatrix 函数从文件中导入数值数组

可以使用 readtimetable 函数将数据导入时间表.使用 "SampleRate" 选项计算每个采样的时间。

        mytbl = readtimetable("fn.txt","SampleRate",Fs) (Fs采样率是时间步长的倒数)

        "TimeStep" 时间步长  ,用 millisecondsseconds 和 minutes 等函数向数值数组添加单位。 

可以使用 timerange 函数从时间表中提取一个范围:

lim = timerange(t1,t2)       "close"

获取某个时间范围内的所有数据,请使用冒号运算符:

tbl = tbl(lim,:)

查看信号的频率成分,可以使用 pspectrum 函数计算功率谱。

pspectrum(mysig)

为了放大有意义的地震活动,您可以在计算功率谱时设置频率范围。

pspectrum(mysig,"FrequencyLimits",[a b])

可以使用 pspectrum 函数获得功率谱和对应的频率。

[pwr,freq] = pspectrum(tbl)

如果 tbl 包含多个信号,则 tbl 是矩阵,其中每列对应一个信号的频谱。

开始创建分块布局之前,请定义布局中绘图的数量:

tiledlayout(2,3)  此代码创建一个 2 行 3 列的布局。

请使用 nexttile 函数填充该分块布局。

tiledlayout(2,3)
nexttile
plot(x,y)
nexttile
plot(x2,y2)

可以使用 synchronize 函数合并这些时间表。

t = synchronize(t1,t2)

地震信号均为均匀采样信号,因此在本练习中,您只需提供信号和重采样因子 p 和 q。 

y = resample(x,p,q)

p 和 q 是整数重采样因子。输出信号 y 具有 x 的 p/q 倍采样。

例如,

y = resample(x,2,3)

以原始采样率的 2/3 倍速率对 x进行重采样。

normalize 函数可用于对时间表进行归一化。

tbl = normalize(tbl)

默认情况下,normalize 函数使用 Z 分数方法。

要计算信号之间的互相关性,请使用 xcorr 函数。

[c,lags] = xcorr(x,y)

如果两个信号之间存在足够的相关性,可使用 finddelay 函数估计它们之间的相对延迟。

d = finddelay(x,y)

输入信号 x 和 y 应为数组,而不是时间表。输出 d 是采样个数。 

可以使用圆点表示法设置时间表属性:

tbl.Properties.PropName

将 harp 表的 StartTime 属性设置为 harpDelay

harp.Properties.StartTime = harpDelay

通过使用 stackedplot 函数可以很方便地在一个时间表中显示多个变量。

stackedplot(tbl)

尝试在信号分析器中查看 quakesROI 信号:

signalAnalyzer(quakesROI)

semilogx 函数将创建一个绘图,其中 x 轴具有对数刻度。

semilogx(f,p)

可以直接使用 10*log10(p),也可以使用 db 函数进行相同的计算。

db(p,"power")

semilogx(f,db(p,"power"))

一次只能创建一个信号的频谱图,但 quakes 表包含三个信号。您可以使用点索引分别输入信号和时间向量。

pspectrum(data.Signal,data.Time,"spectrogram")

可以使用 "MinThreshold" 选项去除低功率频率。

pspectrum(data,"spectrogram", ...
    "MinThreshold",n

可以用 cwt 函数创建尺度图。

cwt(sig,fs)

第一个输入是信号,第二个输入是采样率。

还可以使用 cwt 函数设置频率范围。

cwt(sig,fs, ...
    "FrequencyLimits",[a b])

cwt 函数没有 MinThreshold 选项,但您可以通过设置颜色图范围来实现相同的效果。

caxis([a b])

在给定频率上添加一条垂直线,有助于选择用于滤波的通带频率。

xline(pass)

可以使用 lowpass 函数进行低通滤波。

lowpass(tbl,pass)

要对时间表中的一个变量进行滤波,您可以使用冒号运算符 (:) 来获取给定变量名称的所有时间戳。

tbl(:,"VarName")

在 0.1 Hz 处对 quakes 中的 WANC 变量进行低通滤波。

lowpass(quakes(:,"WANC"),0.1)

要减少滤波信号中的高频成分,可以增大陡度。 

sig = lowpass(tbl,pass,"Steepness",s)

可以使用带通滤波器只保留该范围内的频率。

bandpass(tbl,[f1 f2])

在绘制低通和带通滤波信号之前,请将它们合并到一个时间表中。

tbl = timetable(t,sig1,sig2,...
    'VariableNames',["A" "B"])

plot后将 x 范围设置为从 2900 秒到 2950 秒

xlim([seconds(2900) seconds(2950)])

在基于频谱图进行任何计算之前,您首先需要获得数组(而不仅仅是图像)。

[p,f,t] = pspectrum(sig,time,"spectrogram")

三个输出是每段信号的频谱估计值、频率和时刻。

要找出哪些时间戳包含大量高频成分,您可以对每个时间戳的所有频率的功率求和。sum

psum = sum(p)

plot(t,psum)

为了突显峰值,您可以计算功率。

db(p,"power")

您可以使用“求局部极值”的交互式任务来自动识别信号中的局部最小值或最大值。

最后

以上就是彩色斑马为你收集整理的信号处理入门之旅内容速览的全部内容,希望文章能够帮你解决信号处理入门之旅内容速览所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部