小编arc*_*pus的帖子

变量定义中"lu"的含义

lu在这种情况下意味着什么:

size_t size = 10lu;
Run Code Online (Sandbox Code Playgroud)

我一无所获.
谢谢!

c++

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

numpy.fft.fft是如何工作的?

我目前正试图从numpy中理解fft函数.为此,我测试了以下假设:
我有两个函数,f(x) = x^2g(x) = f'(x) = 2*x.根据傅立叶变换定律和wolfram alpha,它应该是G(w) = 2pi*i*F(w)(前因子可以变化,但应该只有一个常数因子).在python中实现它时,我写道

import numpy as np
def x2(x):
    return x*x
def nx(x):
    return 2*x

a = np.linspace(-3, 3, 16)
a1 = x2(a)
a2 = nx(a)

b1 = np.fft.fft(a1)
b2 = np.fft.fft(a2)

c = b1/b2
Run Code Online (Sandbox Code Playgroud)

现在我期待一个几乎恒定的价值c,但我得到了

array([  1.02081592e+16+0.j        ,   1.32769987e-16-1.0054679j ,
         4.90653893e-17-0.48284271j,  -1.28214041e-16-0.29932115j,
        -1.21430643e-16-0.2j       ,   5.63664751e-16-0.13363573j,
        -5.92271642e-17-0.08284271j,  -4.21346622e-16-0.03978247j,
        -5.55111512e-16-0.j        ,  -5.04781597e-16+0.03978247j,
        -6.29288619e-17+0.08284271j,   8.39500693e-16+0.13363573j,
        -1.21430643e-16+0.2j       ,  -0.00000000e+00+0.29932115j,
        -0.00000000e+00+0.48284271j,   1.32769987e-16+1.0054679j ])
Run Code Online (Sandbox Code Playgroud)

我的错误在哪里,我该如何按照预期使用fft?

python signal-processing numpy fft

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

数据对齐方面的差异

我有以下代码:

    int byte_align(void * ptr)
    {
        int power = 2, n = 1, result = 0;
        size_t address = reinterpret_cast<size_t>(ptr);
        while(address%power == 0)
        {
            power *=2;
            result = n;
            n++;
        }
        return result;
    }
Run Code Online (Sandbox Code Playgroud)

当我执行这个函数(在Ubuntu上用g ++ 4.6用-O3编译)时,我得到一个双变量,每次运行不同的值(4,5,7,8).为什么?在具有相同操作系统和相同编译器的另一台PC上,我总是得到3.
这些结果的其他可能原因是什么?
谢谢!

c++ alignment

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

通过boost tcp传输文件

我想通过tcp over lan传输一些文件,所以我为TX-Part编写了以下代码:

void send_data(char * filename, char * dest)
{
    try
    {
        boost::asio::io_service io_service;
        char dest_t = *dest;
        std::string adr = ip_adr_display[0] + ':' + boost::lexical_cast<std::string>(PORTNUM_TCP_IN);
        std::cout << "Adress is: " << adr << " and file is: " << filename << '\n';
        if(debugmode)
            debug_global << adr << '\n';
        std::string file = filename;
        async_tcp_client client(io_service, adr, file);
        io_service.run();
    }
    catch(std::exception& e)
    {
    };
};
Run Code Online (Sandbox Code Playgroud)

和RX部分:

void rec_data(void)
{
    try
    {
        std::cout << "Receiving data...\n";
        async_tcp_server *recv_file_tcp_server = new async_tcp_server(PORTNUM_TCP_IN); …
Run Code Online (Sandbox Code Playgroud)

c++ boost tcp

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

如何更快地读取多个文件?

在我的程序中,我想读取几个文本文件(超过约800个文件),每个文件有256行,文件名从1.txt到n.txt,并在几个处理步骤后存储到数据库中.我的问题是数据的读取速度.通过使用OpenMP多线程读取循环,我可以将程序速度提高到以前的两倍.有没有办法加快速度?我的实际代码是

std::string CCD_Folder = CCDFolder; //CCDFolder is a pointer to a char array
int b = 0;
int PosCounter = 0;
int WAVENUMBER, WAVELUT;
std::vector<std::string> tempstr;
std::string inputline;
//Input
omp_set_num_threads(YValue);
#pragma omp parallel for private(WAVENUMBER) private(WAVELUT) private(PosCounter) private(tempstr) private(inputline)
    for(int i = 1; i < (CCD_Filenumbers+1); i++)
    {
        //std::cout << omp_get_thread_num() << ' ' << i << '\n';
        //Umwandlung und Erstellung des Dateinamens, Öffnen des Lesekanals
        std::string CCD_Filenumber = boost::lexical_cast<string>(i);
        std::string CCD_Filename = CCD_Folder + '\\' + CCD_Filenumber + ".txt"; …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading file

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

QT中信号的未定义参考

我想在Qt中的单独文件中创建一个类,然后在我的主文件中使用此类(后台:辅助线程更新GUI).因此我写了ReadDPC.h-file:

class ReadDPC: public QThread
{
//First edit:
Q_OBJECT
//End of first edit
public:
    void run();
signals:
    void currentCount(int);
};
Run Code Online (Sandbox Code Playgroud)

在我的ReadDPC.cpp文件中:

void ReadDPC::run()
{
    while(1)
    {
        usleep(50);
        int counts = read_DPC();
        emit currentCount(counts);
    }
}
Run Code Online (Sandbox Code Playgroud)

read_DPC()是一个返回int-value 的函数,也放在cpp文件中.
但是当我想编译它时,我得到了错误undefined reference to ReadDPC::currentCount(int).为什么?我怎么解决这个问题?

编辑:添加Q_Object-Macro,没有解决方案.

c++ qt multithreading

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

什么时候应使用fftshift(fft(fftshift(x))),什么时候应使用fft(x)?

我想在Python中实现的算法,但我不知道我应该使用fftshift(fft(fftshift(x))),只有当fft(x)(来自numpy的)。是否有基于输入数据形状的经验法则?
我使用fftshift而不是ifftshift因为vector中的值是偶数x

python fft

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

未知的 CMake 命令“check_language”

我有一个包含“普通”代码和 CUDA 代码的项目。整个项目由cmake管理。现在,根据目标计算机上 CUDA 的可用性,我希望能够打开和关闭 CUDA 文件。为此,我打算使用 CMake 命令“ check_language”,并在以下CMakeLists文件中实现它:

cmake_minimum_required(VERSION 3.17)

set(PROJECT_NAME "Hello_World_with_CUDA")
set(PROJECT_VERSION 1.0.0)

project(${PROJECT_NAME} VERSION ${PROJECT_VERSION} DESCRIPTION "UPPE pulse propagation library" LANGUAGES CXX)

include(GNUInstallDirs)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/lib)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

check_language(CUDA)
if(CMAKE_CUDA_COMPILER)
    enable_language(CUDA)
    set(CMAKE_CUDA_STANDARD 14)
    set(CMAKE_CUDA_STANDARD_REQUIRED ON)
    add_compile_definitions(USE_CUDA)
else(CMAKE_CUDA_COMPILER)
    message(STATUS "No CUDA support")
    remove_definitions(USE_CUDA)
endif(CMAKE_CUDA_COMPILER)

cmake_policy (SET CMP0074 NEW)

set(PROJECT_SRC source/main.cpp source/test.cu)
set(PROJECT_INC include/test.hpp)

set(PROJECT_SRC ${PROJECT_SRC}
        ${PROJECT_INC})

add_executable(${PROJECT_NAME}
                ${PROJECT_SRC})

target_include_directories(${PROJECT_NAME} PRIVATE
        include)
Run Code Online (Sandbox Code Playgroud)

尽管如此,我还是收到了错误

CMake Error at CMakeLists.txt:17 (check_language):
  Unknown …
Run Code Online (Sandbox Code Playgroud)

c++ cmake

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

将__m128d转换为double

我只是尝试使用SSE扩展,我开始使用简单的矢量点乘法.所以我写了下面的代码:

void SSE_vectormult(double * A, double * B)
{
    __m128d a;
    __m128d b;
    a = _mm_load_pd(A);
    b = _mm_load_pd(B);
    const int mask = 0xf1;
    __m128d res = _mm_dp_pd(a,b,mask);
    A = res;
}
Run Code Online (Sandbox Code Playgroud)

AB相同长度的矢量.现在,我必须将结果转换__m128d回来double.有没有简单的方法(或转换功能)?
谢谢!

c++ sse

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

将np数组从float转换为complex

我有一个带有浮点数据类型的numpy数组,但是extern函数需要一个复杂的数据类型。当我使用时a.view(np.complex),实际值也用于复杂值,从而弄乱了我的进一步计算,即:

a = [1, 2, 3]
b = a.view(np.complex)
> b = [1+1i, 2+2i, 3+3i]
Run Code Online (Sandbox Code Playgroud)

有没有让我得到的命令

> b = [1+0i, 2+0i, 3+0i]
Run Code Online (Sandbox Code Playgroud)

python numpy

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

标签 统计

c++ ×7

python ×3

fft ×2

multithreading ×2

numpy ×2

alignment ×1

boost ×1

cmake ×1

file ×1

qt ×1

signal-processing ×1

sse ×1

tcp ×1