我想实时地对音频信号进行FFT,这意味着当人在麦克风讲话时.我将获取数据(我使用portaudio执行此操作,如果使用wavein会更容易,我会乐意使用它 - 如果您可以告诉我如何).接下来我正在使用FFTW库 - 我知道如何执行1D,2D(实数和复数)FFT,但我不太清楚如何做到这一点,因为我必须进行3D FFT以获得频率,幅度(这将决定颜色渐变)和时间.或者它只是一个2D FFT,我得到幅度和频率?
我真的很困惑为什么2-CNF SAT在P中,而3-CNF SAT在NPC中.我读了CLRS,我理解他们如何证明3-CNF SAT在NPC中.我不能使用从SAT到2-CNF-SAT相同的可还原性来证明2-CNF-SAT在NPC中.我不明白为什么2-CNF SAT在P.
我正在尝试用C制作音频频谱图,并考虑使用BASS库:
我在谷歌和这里搜索过,但大多数例子都是用C++编写的.如果您有任何经验或资源,请帮助; 非常感谢.
所以这就是我想要做的:
像这样的东西:

http://upload.wikimedia.org/wikipedia/commons/c/c5/Spectrogram-19thC.png
如果你能提供帮助就会很棒.
我试过蛮力的方式:
#include <stdio.h>
int sum(int a [],int b[], int m);
int main (void)
{
int a [] = {1,2,3,4,5};
int b [] = {4,3,5,2,6};
int i;
printf("Enter to find a given number:\n");
scanf("%d",&i);
printf("%s\n",sum(a,b,i) ? "True":"False");
return 0;
}
int sum(int a[], int b[],int m)
{
int i=0,j=0;
for (i=0;i<=sizeof(a)/sizeof(int)+1;i++)
for(j=0;j<=sizeof(b)/sizeof(int)+1;j++)
if (a[i]+b[j]==m)
return 1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你可以看到运行时间是O(n ^ 2),有没有巧妙的方法来最小化这个?
我正在尝试使用portaudio(跨平台功能),从麦克风读入,然后我想通过FFT放置该数据,但我不太确定如何做到这一点.很多人告诉我:1.获取数据,2.应用fft,但问题是我不太确定如何获取数据,portaudio没有太多关于从麦克风获取输入的教程,如果你知道任何代码,教程或任何其他资源,它将是完整的.我一直在搜索这个问题.请帮忙
我想在matlab中制作一个频谱图,这是我的代码:
% Record your voice for 100 seconds.
recObj = audiorecorder;
disp('Start speaking.')
recordblocking(recObj, 100);
% Store data in double-precision array.
my= getaudiodata(recObj);
figure;
specgram(my,512);
Run Code Online (Sandbox Code Playgroud)
问题是,虽然我说我想要显示频谱图,所以它应该在我说话时更新.当音频来自麦克风时,如何绘制频谱图?所以我应该能够实时看到频谱图
我也尝试过这个
% Record your voice for 100 seconds.
recObj = audiorecorder;
disp('Start speaking.')
a=0;
figure;
while a<60
recordblocking(recObj, 100);
% Store data in double-precision array.
my= getaudiodata(recObj);
specgram(my,512);
a=a+1;
end
Run Code Online (Sandbox Code Playgroud)
但它只会在while循环钓鱼时显示频谱图(因此在运行60次后)
我目前正在尝试Project Euler,其中一个问题是计算2 ^ 1000,并计算数字位数.我可以很容易地做到2 ^ 15,但2 ^ 1000的问题是,当我计算它时,它是用科学记数法给出的,所以很难对数字求和.
import math
def power(x):
y_p=1000*math.log(x,10.0)
y=math.pow(10,y_p)
return y
if __name__=="__main__":
ans=power(2)
a=str(ans)
print a
sum=0
for i in a:
if i == ".":
print "encountered ."
elif i == "e":
break
else:
sum=sum+int(i)
print sum
Run Code Online (Sandbox Code Playgroud) 所以我在python中有这个类
class room (object):
def __init__(self,number):
self.room_number=number
def get_room_num(self):
return self.room_number
Run Code Online (Sandbox Code Playgroud)
我还有一个叫做 House 的类,基本上当我创建房子对象时,我还需要为房子创建房间对象,房间的数量将由用户选择。
我很难创建动态对象(因为它是由用户指定的,我们会有 1 个房间或 10 个房间),我不能给每个房间对象一个名字,因为我不知道有多少个。
所以我试过这样
class House (object):
def __init__(self,num_of_rooms):
self.room_holder=[]
for i in range(num_of_rooms):
self.room_holder.append(room(i))
def __iter__(self):
return iter(self.room_holder)
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点?如果有,请帮忙
的ITER功能是有这样我就可以在其上进行迭代,例如
mansion=House(10)
for i in mansion:
print i.get_room_num()
Run Code Online (Sandbox Code Playgroud) 我的主程序读取配置文件,配置文件告诉它运行哪些函数.这些函数在一个单独的文件中,当我创建一个新函数时,我必须在主程序中添加函数调用(因此当配置文件指示它时可以引发它)
我的问题是,有什么方法可以让主程序单独使用,当我添加一个新函数时,它可以通过某种数组调用.
例如(忍受我,我不确定你能做到这一点).
我有一个数组(或枚举),
char functions [3] = ["hello()","run()","find()"];
Run Code Online (Sandbox Code Playgroud)
当我读取配置文件并且它说运行hello()时,我可以使用数组运行它(我可以找到数组中是否存在测试)
我也可以轻松地向阵列添加新功能.
注意:我知道它不能用数组完成,所以只是一个例子
class car {
int speed;
double position;
public:
car(int v,double d);
int getspeed();
};
int car::getspeed() {
return speed;
}
car::car(int s, double x){
speed=s;
position=x;
}
Run Code Online (Sandbox Code Playgroud)
即使我为car(int s,v)指定了不同的变量,为什么它可以工作?我虽然它应该给我一个编译时错误?
这段代码:它使用哪种var?
class car {
int speed;
double position;
public:
car(int speed,double time);
int getspeed();
};
int car::getspeed() {
return speed;
}
car::car(int speed, double position){
speed=speed;
position=position;
}
Run Code Online (Sandbox Code Playgroud)
我认为可能会使用全局变量,或者它是您无法确定的事情
主要问题是创建动态类.我做了什么:
ptr = new animal[2];
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个大小为2的动态数组,由指针ptr指向.当我尝试这些操作时会出现问题:
ptr[0].setspeed(9);
ptr++->setspeed(13);
Run Code Online (Sandbox Code Playgroud)
我正在使用DDD(gdb图形)调试器,当我显示ptr时,我只看到它指向一个对象.当我尝试设置速度时,第一个似乎工作,但第二个不会(速度默认为0).打印只会变成垃圾.
我不太确定发生了什么,请帮忙.
当我这样做时:
ptr->print();
Run Code Online (Sandbox Code Playgroud)
难道这就是打印两个ptr[0]和ptr[1],或者只是ptr[0]?
此外,有人可以快速绘制出ptr动态类和新动态类的图片吗?我看到它的方式,它是一个指向数组的ptr,数组大小为2,每个都有一个动物对象.
#include <iostream>
using namespace std;
class animal
{
private:
int speed;
double position_x;
double position_y;
public:
animal() : speed(0), position_x(0), position_y(0)
{
}
animal (int v, double x, double y)
{
this->speed = v;
this->position_x = x;
this->position_y = y;
}
animal(const animal & g)
{
this->speed = g.speed;
this->position_x = g.position_x;
this->position_y = g.position_y;
}
~animal();
void …Run Code Online (Sandbox Code Playgroud)