我正在处理可处理音频数据的应用程序。我正在使用Java(我已经添加了MP3SPI,Jlayer和Tritonus)。我正在将音频数据从.wav文件提取到字节数组。我正在使用的音频数据样本是16位立体声。
根据我读过的一个样本的格式,是:
AABBCCDD
其中AABB代表左声道和CCDD右声道(每个声道2个字节)。我需要将此样本转换为双精度值类型。我正在阅读有关数据格式的信息。Java使用Big Endian,.wav文件使用little endian。我有点困惑。您能帮我完成转换过程吗?谢谢大家
我正在使用FIR滤波器对音频进行过采样.这是一个简单的典型窗口sinc,即sinc函数被截断和窗口化.像往常一样,它需要过去和'未来'的样本才能工作.实际上,这意味着音频输出被延迟.sinc功能是理想的低通滤波器.我的问题是什么是等价的,除非没有'未来'样本.我想这个功能与砖墙IIR滤波器的脉冲响应相同.它将具有完美的砖墙切割,但不会有完美的相位响应.
我试图从一个采样率重新采样信号(声音样本)到更高的采样率.不幸的是,它需要某种过滤器,因为有些"混叠"似乎会发生,而且我不熟悉过滤器.这是我想出的:
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
非常感谢你的帮助!
我正在尝试修改现有矩阵,以便在将新行添加到矩阵时,它会从预先存在的矩阵中删除值.
例如,我有矩阵:
[,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)
但这只删除了我想要删除的两个值中的一个.我也尝试过对矩阵进行子集化的变化,但我还没有成功.
再次感谢你!
如果我想采样数字来创建一个矢量我做:
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) 我有一个大约 1.25 亿行的巨大坐标文件。我想对这些线条进行采样以获得所有线条的 1%,以便我可以绘制它们。有没有办法在R中做到这一点?文件很简单,只有3列,我只对前两列感兴趣。该文件的示例如下:
1211 2234
1233 2348
.
.
.
Run Code Online (Sandbox Code Playgroud)
任何帮助/指针都受到高度赞赏。
我想从 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) 以下代码从具有不同间隔的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) 我正在开发一款Android应用程序,用于记录智能手机上的惯性数据,然后进一步处理它.不同的Android设备具有不同的行为,具体取决于将惯性传感器连接到Android的固件,这一点非常清晰.有一点我无法回答的问题是,为什么只有moto g 2nd gen还表明当应用程序正在录制时我的传感器样本数量明显不同?
例如,几秒钟的录音,我看到:
~6000个样本用于陀螺仪
~5200个样本用于acc
〜2000个磁力计样品
假设我正在录制的活动一直影响所有传感器,因此我希望可以均匀地调用onSensorChange函数.这种情况发生在我尝试的其他智能手机上(5或6个不同的智能手机).
为了让onSensorChange记录它,为什么磁体大多数似乎不像其他传感器那样频繁地改变值?
显而易见的答案是因为固件,但您是否知道如何减轻我所看到的影响?
谢谢大家!
我正在模拟一维对称的随机游走过程:
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=5和t=10.)
哪个函数可以让我用y[t]随机游走时间序列进行这种重复?