小编Rav*_*ave的帖子

实时进行FFT

我想实时地对音频信号进行FFT,这意味着当人在麦克风讲话时.我将获取数据(我使用portaudio执行此操作,如果使用wavein会更容易,我会乐意使用它 - 如果您可以告诉我如何).接下来我正在使用FFTW库 - 我知道如何执行1D,2D(实数和复数)FFT,但我不太清楚如何做到这一点,因为我必须进行3D FFT以获得频率,幅度(这将决定颜色渐变)和时间.或者它只是一个2D FFT,我得到幅度和频率?

c signal-processing fft real-time

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

2-CNF SAT如何在P中,而3-CNF SAT在NPC中?

我真的很困惑为什么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.

algorithm np-complete np

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

使用C编程频谱图

我正在尝试用C制作音频频谱图,并考虑使用BASS库:

http://www.un4seen.com.

我在谷歌和这里搜索过,但大多数例子都是用C++编写的.如果您有任何经验或资源,请帮助; 非常感谢.

所以这就是我想要做的:

  1. 从麦克风输入读取.
  2. 对数据进行采样.
  3. 应用短时傅里叶变换.
  4. 然后取出幅度并以特定频率绘制它.

像这样的东西:

在此输入图像描述

http://upload.wikimedia.org/wikipedia/commons/c/c5/Spectrogram-19thC.png

如果你能提供帮助就会很棒.

c audio signal-processing fft spectrogram

5
推荐指数
0
解决办法
3388
查看次数

检查给定数字是否是2个数组中两个数字的总和

我试过蛮力的方式:

#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),有没有巧妙的方法来最小化这个?

c algorithm

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

PortAudio:如何从麦克风获取记录(获取数据)

我正在尝试使用portaudio(跨平台功能),从麦克风读入,然后我想通过FFT放置该数据,但我不太确定如何做到这一点.很多人告诉我:1.获取数据,2.应用fft,但问题是我不太确定如何获取数据,portaudio没有太多关于从麦克风获取输入的教程,如果你知道任何代码,教程或任何其他资源,它将是完整的.我一直在搜索这个问题.请帮忙

c portaudio

4
推荐指数
1
解决办法
5927
查看次数

在matlab中编程(如何实时处理)

我想在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次后)

matlab

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

计算更大数字的位数

我目前正在尝试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 math

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

在python中的类内创建对象

所以我在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)

python oop class object

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

在C/C++中自动调用函数

我的主程序读取配置文件,配置文件告诉它运行哪些函数.这些函数在一个单独的文件中,当我创建一个新函数时,我必须在主程序中添加函数调用(因此当配置文件指示它时可以引发它)

我的问题是,有什么方法可以让主程序单独使用,当我添加一个新函数时,它可以通过某种数组调用.

例如(忍受我,我不确定你能做到这一点).

我有一个数组(或枚举),

char functions [3] = ["hello()","run()","find()"];
Run Code Online (Sandbox Code Playgroud)

当我读取配置文件并且它说运行hello()时,我可以使用数组运行它(我可以找到数组中是否存在测试)

我也可以轻松地向阵列添加新功能.

注意:我知道它不能用数组完成,所以只是一个例子

c c++

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

C++中的类和变量范围

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)

我认为可能会使用全局变量,或者它是您无法确定的事情

c++ scope class

0
推荐指数
1
解决办法
5383
查看次数

课程和指针,它们如何工作?

主要问题是创建动态类.我做了什么:

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)

c++ pointers

0
推荐指数
3
解决办法
183
查看次数