小编Kat*_*ern的帖子

有没有一种优雅的方法来使用ffmpeg按章拆分文件?

这个页面中,Albert Armea分享了一个代码,用章节分割视频ffmpeg.代码很简单,但不太好看.

ffmpeg -i"$ SOURCE.$ EXT"2>&1 | grep章节| sed -E"s/*Chapter#([0-9] +.[0-9] +):start([0-9] +.[0-9] +),end([0-9] + .[0-9] +)/ - i \"$ SOURCE.$ EXT \"-vcodec copy -acodec copy -ss\2 -to\3 \"$ SOURCE-\1. $ EXT \"/"| xargs -n 11 ffmpeg

有一种优雅的方式来完成这项工作吗?

ffmpeg

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

如何在Matplotlib中制作四向对数图?

四向对数图是用于振动控制和地震保护的常用图.我非常感兴趣的是如何在Matplotlib中绘制此绘图而不是在Inkscape中添加轴.这里是四向对数图的样本.

四向对数图

快速而肮脏的Python代码可以生成图形的主要部分,但我不能将两个轴添加到图形上.http://matplotlib.org/examples/axes_grid/demo_curvelinear_grid.html提供了添加轴的示例,但我无法使其正常工作.任何人都有类似的经验,将轴添加到Matplotlib图中?

from pylab import *
from  mpl_toolkits.axisartist.grid_helper_curvelinear import GridHelperCurveLinear
from mpl_toolkits.axisartist import Subplot
beta=logspace(-1,1,500)
Rd={}
for zeta in [0.01,0.1,0.2,0.7,1]:
    Rd[zeta]=beta/sqrt((1-beta*beta)**2+(2*beta*zeta)**2)
    loglog(beta,Rd[zeta])
ylim([0.1,10])
xlim([0.1,10])
grid('on',which='minor')
Run Code Online (Sandbox Code Playgroud)

我的情节

更新:谢谢大家!我使用Inkscape来修改上图.我认为结果很好.但是,我仍在寻找在Matplotlib中绘制此图的方法. Inkscape已修改

python plot matplotlib

11
推荐指数
1
解决办法
1035
查看次数

傅立叶变换Sympy中的trig函数返回意外结果

我认为Sympy在计算trig函数的傅里叶变换时犯了一个错误.例如:

from sympy import fourier_transform, sin
from sympy.abc import x, k
print fourier_transform(sin(x), x, k)
Run Code Online (Sandbox Code Playgroud)

Mathematica的预期答案是

在此输入图像描述

但Sympy返回0.有时候该功能运行得很好,fourier_transform(Heaviside(t)*cos(t),t,omega)fourier_transform(Heaviside(t)*sin(t),t,omega)返回正确的答案.我认为Sympy可能正在使用拉普拉斯变换来计算傅里叶变换.

python integration sympy continuous-fourier

9
推荐指数
1
解决办法
1466
查看次数

如何在 Sympy 中找到函数的最大值?

这些天我正在尝试使用 Sympy 重做单自由度系统的冲击谱。这个问题可以减少寻找函数最大值的问题。以下是两种情况,我不知道该怎么做。

第一个是

tau,t,t_r,omega,p0=symbols('tau,t,t_r,omega,p0',positive=True)
h=expand(sin(omega*(t-tau)))
f=simplify(integrate(p0*tau/t_r*h,(tau,0,t_r))+integrate(p0*h,(tau,t_r,t)))
Run Code Online (Sandbox Code Playgroud)

f最终目标是获得(变量为)的最大绝对值t。直接的方法是

df=diff(f,t)
sln=solve(simplify(df),t)
simplify(f.subs(t,sln[1]))
Run Code Online (Sandbox Code Playgroud)

这是结果,我尝试了很多方法,但无法进一步简化。

结果

因此,我尝试了另一种方式。因为我需要最大绝对值和abs(f)最大值出现的位置与 的平方相同的位置f,所以我们可以先计算 的平方f

df=expand_trig(diff(expand(f)**2,t))
sln=solve(df,t)
simplify(f.subs(t,sln[2]))
Run Code Online (Sandbox Code Playgroud)

看来答案几乎是一样的,只是换了一种形式。

结果

预期的答案是一个sinc函数加一个常数,如下所示:

预期的

因此,问题是如何得到最终的呈现。

第二个可能有点难。这个问题可以简化为找到 的最大值f=sin(pi*t/t_r)-T/2/t_r*sin(2*pi/T*t),其中t_rT是两个参数。t_r当和的比值变化时,最大值位于不同的峰值处T。我在 Sympy 中没有找到解决它的方法。有什么建议吗?答案可以用下图来表示。

最大限度

max sympy computer-algebra-systems

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

ts(x) 中的错误:“ts”对象必须有一个或多个观察结果

当我使用forecast库进行预测时,我注意到以下代码没有按预期运行:

library(forecast)
library(dplyr)
df1 <- data.frame(gp=gl(20,5), dt=seq(1:100))

get <- function (df1){
  ts1 <- ts((df1%>%filter(gp==2))$dt)
  as.numeric(forecast(ar(ts1),15)$mean)
}    

print(get(df1))
Run Code Online (Sandbox Code Playgroud)

错误返回是:

ts(x) 中的错误:“ts”对象必须有一个或多个观察结果

可能是由arar.burg功能引起的。因为如果您将功能更改为ets或其他功能,则该功能运行良好。

更奇怪的是,如果把代码改成:

library(forecast)
library(dplyr)
df1 <- data.frame(gp=gl(20,5), dt=seq(1:100))
ts1 <- ts((df1%>%filter(gp==2))$dt)

get <- function (ts1){
  as.numeric(forecast(ar(ts1),15)$mean)
}


print(get(ts1))
Run Code Online (Sandbox Code Playgroud)

代码也运行正常。我认为这可能是ar功能上的一个错误,问题在某种程度上与范围有关。对此有什么想法吗?

r forecasting dplyr

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