shell 知:ola

gitee地址:https://gitee.com/maminjie/ola

1. 简介

ola(哦啦),对,不是euler(欧拉) -_-

ola实际上是我为openEuler写的一个shell脚本框架。

ola可以让你体会到shell脚本的优雅,当然,你可以不相信,反正我着迷了……

ola采用了面向过程的编程思想,除了简单的原因,还因为我曾经是一个 C-Coder ……

2. 目录

一级目录二级目录说明
ola.sh命令入口
srcapps应用(命令)脚本
libs库脚本,基于标准命令实现
utils通用脚本,框架的核心
test测试脚本

备注:utils和libs中的脚本都是通用的,可以广泛的用在别的项目中。

3. 使用

3.1. 开发

如何开发一个功能?以helloworld.sh为例,如下:

method_def helloworld

usage_helloworld() {
    echo "helloworld (hello): Hello to the world"
}

alias_def helloworld hello
do_helloworld() {
    echo "hello world"
}
  1. 一个功能必须定义两个函数:do_helloworld,usage_helloworld

    备注:

    • do_xxx和usage_xxx后面的名字必须一致
    • usage_xxx第一行是功能的简述,通过’:'分割
  2. 一个功能通过method定义后才生效:method_def helloworld

    备注:

    • method定义的方法,最终在ola中以子命令的形式存在
  3. 一个功能别名通过alias定义:alias_def helloworld hello

    备注:

    • alias定义的别名,最终在ola中也以子命令的形式存在
    • ailas可以定义多个别名,比如:alias_def helloworld hello hw

3.2. 执行

通过执行ola.sh脚本来执行不同的功能。

  1. 查看所有帮助信息
bash ola.sh [-h|--help]
  1. 查看命令帮助信息
bash ola.sh h helloworld
bash ola.sh h hello
  1. 执行命令
bash ola.sh helloworld
bash ola.sh hello

3.3. 配置

有些命令需要先配置信息,ola的配置模板文件在config/ola.conf中,通过变量CONFIG_FILE指定配置文件。

ola提供了两个命令用来管理配置文件:init,set

bash ola.sh init
bash ola.sh set

init:初始化配置文件

set:设置/编辑配置文件

4. 结语

更多功能请自行解锁!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OLA(Overlap-Add)算法是一种常见的音频信号变速算法。下面是 MATLAB 实现 OLA 算法的基本步骤: 1. 对输入的音频信号进行分帧处理,每一帧的长度为 N。 2. 在每一帧之间进行重叠处理,即取相邻两帧的交叠部分,长度为 L(通常 L = N/2)。 3. 对于每一帧,进行 FFT 变换,得到频域的表示。 4. 计算变速因子 s,根据 s 计算每一帧应该占据的时间长度 M。 5. 对每一帧的频域表示进行插值或者抽样操作,得到新的频域表示,使得每一帧占据的时间长度为 M。 6. 对每一帧的频域表示进行 IFFT 变换,得到时域的表示。 7. 对于相邻两帧的交叠部分,进行叠加和平均处理,得到重叠部分的输出。 8. 对于每一帧的输出,输出一段长度为 M 的信号。 下面是一个简单的 MATLAB 代码实现 OLA 音频变速算法: ```matlab % 读取音频文件 [x, fs] = audioread('input.wav'); % 设置变速因子 s = 1.5; % 计算每一帧的长度和重叠长度 N = 1024; L = N/2; % 计算每一帧应该占据的时间长度 M = round(N/s); % 初始化输出信号 y = zeros(length(x)/s, 1); % 遍历每一帧 for i = 1:M:length(x)-N % 取一帧数据 x_frame = x(i:i+N-1); % 进行 FFT 变换 X = fft(x_frame); % 对频域表示进行插值或者抽样 Y = interp1(linspace(0, 1, N), X, linspace(0, 1, M)); % 进行 IFFT 变换 y_frame = ifft(Y); % 对相邻两帧的重叠部分进行叠加和平均处理 y(i+1:i+L) = (y(i+1:i+L) + y_frame(1:L))./2; % 输出一段长度为 M 的信号 y(i+L+1:i+L+M) = y_frame(L+1:end); end % 将输出信号保存为音频文件 audiowrite('output.wav', y, fs); ``` 上述代码仅是一个简单的实现,实际应用中可能需要考虑更多的细节和优化方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值