标签: sampling

如何将.WAV音频数据样本转换为双精度类型?

我正在处理可处理音频数据的应用程序。我正在使用Java(我已经添加了MP3SPI,Jlayer和Tritonus)。我正在将音频数据从.wav文件提取到字节数组。我正在使用的音频数据样本是16位立体声。

根据我读过的一个样本的格式,是:

AABBCCDD

其中AABB代表左声道和CCDD右声道(每个声道2个字节)。我需要将此样本转换为双精度值类型。我正在阅读有关数据格式的信息。Java使用Big Endian,.wav文件使用little endian。我有点困惑。您能帮我完成转换过程吗?谢谢大家

java audio signal-processing wav sampling

5
推荐指数
1
解决办法
6323
查看次数

低通FIR滤波器 - 没有延迟

我正在使用FIR滤波器对音频进行过采样.这是一个简单的典型窗口sinc,即sinc函数被截断和窗口化.像往常一样,它需要过去和'未来'的样本才能工作.实际上,这意味着音频输出被延迟.sinc功能是理想的低通滤波器.我的问题是什么是等价的,除非没有'未来'样本.我想这个功能与砖墙IIR滤波器的脉冲响应相同.它将具有完美的砖墙切割,但不会有完美的相位响应.

signal-processing filter sampling

5
推荐指数
1
解决办法
4227
查看次数

重新采样声音样本,我使用什么过滤器?

我试图从一个采样率重新采样信号(声音样本)到更高的采样率.不幸的是,它需要某种过滤器,因为有些"混叠"似乎会发生,而且我不熟悉过滤器.这是我想出的:

int i, j, a, b, z;

a = 44100;
b = 8363;

// upsample by a
for(i = z = 0; i < samplen; i++)
    for(j = 0; j < a; j++)
        cbuf[z++] = sampdata[i];

// some filter goes here???

// downsample by b
for(j = i = 0; i < z; i += b)
    buf[j++] = cbuf[i];
Run Code Online (Sandbox Code Playgroud)

新样本与原始样本非常相似,但它有一些噪音.你能告诉我我需要添加什么过滤器,最好是一些与该过滤器相关的代码吗?

原声:http://www.mediafire.com/? 9gnga1in52d6t4x重采样声音:http://www.mediafire.com/? x34h7ggk8n9k8z1

c audio signal-processing filter sampling

5
推荐指数
2
解决办法
2万
查看次数

在添加向量后在随机选择现有矩阵中的值(在R中)

非常感谢你的帮助!

我正在尝试修改现有矩阵,以便在将新行添加到矩阵时,它会从预先存在的矩阵中删除值.

例如,我有矩阵:

[,1] [,2] [,3] [,4]
 1     1    0    0
 0     1    0    0
 1     0    1    0
 0     0    1    1
Run Code Online (Sandbox Code Playgroud)

我想添加另一个矢量,I.vec,它有两个值(I.vec=c(0,1,1,0)).这很容易做到.我只是将它与矩阵联系起来.现在,对于I.vec等于1的每一列,我想从其他行中随机选择一个值并使其为零.理想情况下,这将最终得到一个矩阵,如:

[,1] [,2] [,3] [,4]
 1     0    0    0
 0     1    0    0
 1     0    0    0
 0     0    1    1
 0     1    1    0
Run Code Online (Sandbox Code Playgroud)

但是每次运行迭代时,我都希望它再次随机采样.

所以这就是我尝试过的:

mat1<-matrix(c(1,1,0,0,0,1,0,0,1,0,1,0,0,0,1,1),byrow=T, nrow=4)
I.vec<-c(0,1,1,0)
mat.I<-rbind(mat1,I.vec)
mat.I.r<-mat.I
d1<-mat.I[,which(mat.I[5,]==1)]
mat.I.r[sample(which(d1[1:4]==1),1),which(mat.I[5,]==1)]<-0
Run Code Online (Sandbox Code Playgroud)

但这只删除了我想要删除的两个值中的一个.我也尝试过对矩阵进行子集化的变化,但我还没有成功.

再次感谢你!

r matrix sampling

5
推荐指数
1
解决办法
1169
查看次数

样本最多

如果我想采样数字来创建一个矢量我做:

set.seed(123)
x <- sample(1:100,200, replace = TRUE)
sum(x)
# [1] 10228
Run Code Online (Sandbox Code Playgroud)

如果我想抽样20个总和为100的随机数,然后是30个数字但仍然总和为100,那么我认为这将是一个比看上去更具挑战性的.?sample并且搜索Google并未向我提供线索.然后,如果不足够接近(例如在5之内)期望的总和,则采样的循环然后拒绝可能需要一些时间.

有没有更好的方法来实现这一目标?

一个例子是:

foo(10,100) # ten random numbers that sum to 100. (not including zeros)
# 10,10,20,7,8,9,4,10,2,20
Run Code Online (Sandbox Code Playgroud)

r sampling

5
推荐指数
1
解决办法
379
查看次数

如何从R中的大文件中采样特定比例的行?

我有一个大约 1.25 亿行的巨大坐标文件。我想对这些线条进行采样以获得所有线条的 1%,以便我可以绘制它们。有没有办法在R中做到这一点?文件很简单,只有3列,我只对前两列感兴趣。该文件的示例如下:

1211 2234
1233 2348
.
.
.
Run Code Online (Sandbox Code Playgroud)

任何帮助/指针都受到高度赞赏。

r large-files sampling

5
推荐指数
1
解决办法
2455
查看次数

从 Numpy 数组的索引中采样的有效方法?

我想从 2D Numpy 数组的索引中采样,考虑到每个索引都由该数组内的数字加权。numpy.random.choice然而,我知道它的方式不返回索引,而是返回数字本身。有什么有效的方法吗?

这是我的代码:

import numpy as np
A=np.arange(1,10).reshape(3,3)
A_flat=A.flatten()
d=np.random.choice(A_flat,size=10,p=A_flat/float(np.sum(A_flat)))
print d
Run Code Online (Sandbox Code Playgroud)

python random numpy sampling

5
推荐指数
1
解决办法
1336
查看次数

用于从具有不同间隔的截断正态分布中采样的矢量化代码

以下代码从具有不同间隔的trunctated正态分布生成大小为100的样本.这样做是否有任何有效(矢量化)方式?

from scipy.stats import truncnorm
import numpy as np
sample=[]
a_s=np.random.uniform(0,1,size=100)
b_s=a_s+0.2
for i in range(100):
    sample.append(truncnorm.rvs(a_s[i], b_s[i], size=100))
print sample
Run Code Online (Sandbox Code Playgroud)

python random numpy scipy sampling

5
推荐指数
1
解决办法
662
查看次数

Android上的Accelerometer,Gyro和Magnetometer之间的样本数量不均匀

我正在开发一款Android应用程序,用于记录智能手机上的惯性数据,然后进一步处理它.不同的Android设备具有不同的行为,具体取决于将惯性传感器连接到Android的固件,这一点非常清晰.有一点我无法回答的问题是,为什么只有moto g 2nd gen还表明当应用程序正在录制时我的传感器样本数量明显不同?

例如,几秒钟的录音,我看到:

  • ~6000个样本用于陀螺仪

  • ~5200个样本用于acc

  • 〜2000个磁力计样品

假设我正在录制的活动一直影响所有传感器,因此我希望可以均匀地调用onSensorChange函数.这种情况发生在我尝试的其他智能手机上(5或6个不同的智能手机).

为了让onSensorChange记录它,为什么磁体大多数似乎不像其他传感器那样频繁地改变值?

显而易见的答案是因为固件,但您是否知道如何减轻我所看到的影响?

谢谢大家!

android sampling inertial-navigation

5
推荐指数
1
解决办法
491
查看次数

如何在R中重复1000次这种随机游走模拟?

我正在模拟一维对称的随机游走过程:

y[t] = y[t-1] + epsilon[t]
Run Code Online (Sandbox Code Playgroud)

其中白噪声用epsilon[t] ~ N(0,1)时间段表示t.这个过程没有任何偏差.

此外,RW是对称的,因为Pr(y[i] = +1) = Pr(y[i] = -1) = 0.5.

这是我在R中的代码:

set.seed(1)
t=1000
epsilon=sample(c(-1,1), t, replace = 1)

y<-c()
y[1]<-0
for (i in 2:t) {
  y[i]<-y[i-1]+epsilon[i]
}
par(mfrow=c(1,2))
plot(1:t, y, type="l", main="Random walk")
outcomes <- sapply(1:1000, function(i) cumsum(y[i]))
hist(outcomes)
Run Code Online (Sandbox Code Playgroud)

我想模拟1000个不同的y[i,t]系列(i=1,...,1000; t=1,...,1000).(在那之后,我将检查返回原点(y[1]=0)的概率t=3,t=5t=10.)

哪个函数可以让我用y[t]随机游走时间序列进行这种重复?

r time-series sampling random-walk

5
推荐指数
1
解决办法
1183
查看次数