- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试编写一个类似版本的 python 的 numpy.linspace 函数。
double linspace(int a, int b, int c){
double line[c];
double delta =b-a/(c-1);
for (int i=0; i<c; ++i){
line[i]=0 + (i*delta);
}
return line;
其中 a 和 b 是数组中的第一个和最后一个组件,c 指定数组中的元素数。但是当我编译这个脚本时它返回:
linspace.cpp: In function ‘double linspace(int, int, int)’:
linspace.cpp:11:9: error: cannot convert ‘double*’ to ‘double’ in return
return line;
^
有没有人碰巧知道如何解决这个问题?
最佳答案
这样的事情怎么样:
#include <iostream>
#include <vector>
template<typename T>
std::vector<double> linspace(T start_in, T end_in, int num_in)
{
std::vector<double> linspaced;
double start = static_cast<double>(start_in);
double end = static_cast<double>(end_in);
double num = static_cast<double>(num_in);
if (num == 0) { return linspaced; }
if (num == 1)
{
linspaced.push_back(start);
return linspaced;
}
double delta = (end - start) / (num - 1);
for(int i=0; i < num-1; ++i)
{
linspaced.push_back(start + delta * i);
}
linspaced.push_back(end); // I want to ensure that start and end
// are exactly the same as the input
return linspaced;
}
void print_vector(std::vector<double> vec)
{
std::cout << "size: " << vec.size() << std::endl;
for (double d : vec)
std::cout << d << " ";
std::cout << std::endl;
}
int main()
{
std::vector<double> vec_1 = linspace(1, 10, 3);
print_vector(vec_1);
std::vector<double> vec_2 = linspace(6.0, 23.4, 5);
print_vector(vec_2);
std::vector<double> vec_3 = linspace(0.0, 2.0, 1);
print_vector(vec_3);
std::vector<double> vec_4 = linspace(0.0, 2.0, 0);
print_vector(vec_4);
return 0;
}
C++ 结果:
size: 3
1 5.5 10
size: 5
6 10.35 14.7 19.05 23.4
size: 1
0
size: 0
Numpy 结果:
In [14]: np.linspace(1, 10, 3)
Out[14]: array([ 1. , 5.5, 10. ])
In [15]: np.linspace(6, 23.4, 5)
Out[15]: array([ 6. , 10.35, 14.7 , 19.05, 23.4 ])
In [16]: np.linspace(0.0, 2.0, 1)
Out[16]: array([ 0.])
In [17]: np.linspace(0.0, 2.0, 0)
Out[17]: array([], dtype=float64)
关于C++中的python linspace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27028226/
我遇到了 np.linspace() 的问题,我不知道为什么它会这样。我的代码如下所示: x = linspace(0, 6, 3) print 'x = ', x # prints the
我正在尝试编写一个类似版本的 python 的 numpy.linspace 函数。 double linspace(int a, int b, int c){ double line[c];
如下所示: ? 1
我有一个像这样的 Pandas 数据框 a b c 0 0.5 10 7 1 1.0 6 6 2 2.0 1 7 3 2.5 6 -5 4 3.5 9
我想生成 0 到 1 之间均匀间隔的 50 个数字 首先,我尝试使用 numpy.arange(0,1,0.02),下面是我得到的输出。 [0. 0.02 0.04 0.06 0.08 0.1
我想生成一个 n x 3 矩阵,其中 n 是像素数(宽 * 高)。 x = linspace(-1, 1, width) y = linspace(-1, 1, height) r = 1.0 vie
在我的项目中,编译器提示以下(以及许多其他类似的)代码片段: Eigen::ArrayXf window = Eigen::ArrayXf::LinSpaced(2*M
我有一组想要执行的方程: x = np.linspace(0, 2, 3) y = np.linspace(x, x+2, 3) 然后我想用一个计算来填充二维数组: a = 2*x + y 例如,给定
我有一个带有直方图的函数,绘制如下: import matplotlib.pyplot as plt import numpy as np lin = np.linspace(min(foo), ma
我正在尝试在 for 循环中使用 linspace。我想要 0 到 10 之间的 0.5 间隔。看来 z_bin 正在正确执行。 我的问题:如何在 for 循环中正确使用 linspace 来代替注释
所以我对 linspace 有点问题。我想生成一个数字数组,例如: [0.000001, 0.00001, 0.0001 , 0.001 ,0 .01 , 0.1] 所以我尝试了以下代码: alpha
我希望有一个生成器函数,它返回一条线上的点,给定一个最小距离 k。这很简单,可以使用 numpy 完成,如下所示: points = np.linspace(start, end, k) 但是,我想生
这个问题已经有答案了: How to avoid floating point errors? [duplicate] (2 个回答) 已关闭 4 年前。 我正在尝试使用linspace等间隔闭区间。
使用 MATLAB,我想在数组中的每个点之间进行线性插值。 使用 interpolate 将以非线性方式进行。我想做的是类似于产生低通滤波器系数。 我想出了一个解决方案,但我想避免使用 for 循环:
我一直在研究一种在并行处理中反转拉普拉斯变换的算法(即同时积分 s 空间中的多个拉普拉斯函数),但我知道一个事实,即并行处理不是问题,因为实现此方法是为了解决问题。但问题仍然存在,本质上我的代码一遍又
这样写有什么好处吗 t = linspace(0,20,21) 结束 t = 0:1:20 ? 我理解前者产生一个向量,就像第一个一样。 谁能告诉我 linspace 在 t = 0:1:20 上有用
我对 python 很陌生,在使用 linspace 例程绘制高斯函数图时遇到困难。 (我不想使用 numpy)。 """plot a normalized gaussian function """
这个问题已经有答案了: Use of None in Array indexing in Python (2 个回答) 已关闭 7 年前。 我读过一段代码是这样的 x = np.linspace(0,
np.linspace(10**3, 10**6, num=5, dtype=np.int16) 产量 array([ 1000, -11394, -23788, 29354, 16960],
有人可以用 numpy.linspace 解释这个舍入问题吗? import numpy as np np.linspace(0, 1, 6) == np.around( np.linspace(0,
我是一名优秀的程序员,十分优秀!