【问题标题】:copy only selected information from 2d array to another 2d array仅将选定信息从二维数组复制到另一个二维数组
【发布时间】:2021-04-10 16:27:41
【问题描述】:

我做了一个python代码如下,我只想从EEG到baseline_before读取offset_time[i]-33:offset_time[i]-1信息。在 python 中,它可以工作。但是,我不知道如何在 c++ 中实现此代码。你知道如何在 C++ 中实现映射吗?我想做baseline_before[:][:]

Python 代码

offset_time[0] = 100;
offset_time[1] = 200;

for i in range(0, 2):
       baseline_before = EEG[:,offset_time[i]-33:offset_time[i]-1]

C++ 代码

int offset_time[2];

offset_time[0] = 100;
offset_time[1] = 200;

for (int i = 0; i < 64; i++)
{
    for (int j = 0; j < 2; j++) {
        baseline_before[i][j] = filtered_EEG_data[i][offset_time[j]-32:offset_time[j]-1];
    }
}

【问题讨论】:

  • 没有offset_time[0]
  • 你的数组索引在 C 中是错误的,它们应该是 offset_time[0]offset_time[1]
  • C 没有像 Python 那样的数组切片。
  • 每次循环都会覆盖相同的变量baseline_before。那有什么意义呢?循环完成后,它将只包含上次迭代的数据。
  • @TakuKobayashi -- 一般来说,不要使用 Python 作为编写 C++ 代码的模型。所有这一切都会发生,你会感到困惑,或者编写错误/低效的代码,或者编写对 C++ 程序员来说看起来很奇怪的代码。

标签: python c++ arrays


【解决方案1】:

C 没有数组切片。您可以使用memcpy() 一步复制数组的一部分。

size_t len = sizeof(filtered_EEG_data[i]) * 32;
for (int i = 0; i < 64; i++) {
    for (int j = 0; j < 2; j++) {
        memcpy(baseline_before[i][j], &filtered_EEG_data[i][offset_time[j]-32], len);
    }
}

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 2014-09-03
    相关资源
    最近更新 更多