我想把一个SDR系统放在一起,最初调整AM,后来调整FM等.我打算用来做这个的系统将有一个正弦查找表用于直接数字合成(DDS).为了正确调谐,我希望能够精确控制馈送到混频器的正弦波频率(在这种情况下为乘法器).我预计线性插值会很接近,但认为非线性方法会提供更好的结果.
什么是用于正弦表的良好且快速的插值方法.乘法和加法在目标系统上很便宜; 分工是昂贵的.
编辑:我计划使用乘法/移位函数实现常量,以将常量标准化为缩放整数.中间值将使用宽增加,乘法将使用18或17位.可以使用浮点"预计算",但不能在目标平台上使用.当我说"划分成本很高"时,我的意思是它必须使用乘法器和大量代码来实现.这不是不可想象的,但应该避免.但是,真正的浮点IEEE方法将在此平台上占用大量资源,以及自定义实现.
任何SDR经验都会有所帮助.
interpolation trigonometry signal-processing radio nonlinear-functions
我有两个函数:一个用于行(y),另一个用于曲线(hnc).我想确定两个函数相交的一个x值
sigma = 0.075
mu = 0
r=0.226
theta=0.908
H=0.16
hnc <- function(x) (1/(sigma*sqrt(2*pi)))*(exp(-(x^2)/(2*(sigma^2))))
y <- function(x) 2*pi*x+(pi*r^2/((360/theta)/H))
curve(hnc,0,r,n=100,col="blue")
plot(y,0,r,add=T,col="red")
Run Code Online (Sandbox Code Playgroud)
我尝试过使用nleqslv软件包,但是这会产生两个不同意的x值(也许是因为我使用的不正确)
int <- function(x){
z <- numeric(2)
z[1] <- (1/(sigma*sqrt(2*pi)))*(exp(-(x[1]^2)/(2*(sigma^2))))
z[2] <- 2*pi*x[2]+(pi*r^2/((360/theta)/H))
z}
nleqslv(c(0.14,0.14),int,method="Broyden")
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激!
谢谢,埃里克
我有以下数据,其中xx和yy之间似乎存在曲线关系:
head(ddf)
xx yy
1 1 10
2 2 9
3 3 11
4 4 9
5 5 7
6 6 6
ddf = structure(list(xx = 1:23, yy = c(10L, 9L, 11L, 9L, 7L, 6L, 9L,
8L, 5L, 4L, 6L, 6L, 5L, 4L, 6L, 8L, 4L, 6L, 8L, 11L, 8L, 10L,
9L)), .Names = c("xx", "yy"), class = "data.frame", row.names = c(NA,
-23L))
with(ddf, plot(xx,yy))
Run Code Online (Sandbox Code Playgroud)

我想分析一下并得到以下内容:
我知道nls,它给了我一个等式,但我必须输入一个公式,这可能不正确.此外,我无法得到曲线和R和P值.
> nls(yy~a*(xx^b), data=ddf)
Nonlinear regression model
model: yy …Run Code Online (Sandbox Code Playgroud) 我正在使用 GSL 研究非线性微分方程。问题是我对 C 语言很陌生。我只是将 GNU 站点上的示例修改为我现在感兴趣的方程式。
这是等式:
d2x/dt2 + r*dx/dy + cos(x) + v*cos(2*x+0.4) E1*sin(wt) + E2*sin(2*w*t+a) = 0
Run Code Online (Sandbox Code Playgroud)
我被卡住的是我不知道如何在代码中插入多个参数。此外,我不知道如何在这段代码中使用余弦或正弦函数。
我一直在谷歌上搜索,试图找出这个问题。我找不到任何可以帮助我的东西。
#include <stdio.h>
#include <gsl/gsl_errno.h>
#include <math.h>
#include <gsl/gsl_math.h>
#include <gsl/gsl_matrix.h>
#include <gsl/gsl_odeiv2.h>
int func (double t, const double x[], double y[], void *params)
{
double r = *(double *)params;
double v = *(double *)params;
double w = *(double *)params;
double E1 = *(double *)params;
double E2 = *(double *)params;
double a = *(double *)params;
y[0] = x[1];
y[1] …Run Code Online (Sandbox Code Playgroud) 在讨论神经网络时,我对使用术语线性/非线性感到困惑.任何人都可以为我澄清这3点:
除了在应用 GLM 系列的某些技术之前使用的线性图形估计(注视散点图方法)之外,还有几种方法可以在算术上进行此估计(即没有图形)。
现在,我将关注 Fisher 的eta 平方- 相关比:在算术上,如果两个变量之间的关系是线性的,则它等于 Pearson r 的平方(决定系数:r 2)。因此,您可以比较eta和r 的值并评估关系类型(线性与否)。它提供有关由自变量解释(线性或非线性)的因变量的方差百分比的信息。因此,您可以在不满足线性假设时应用它。
简单地说:R 中是否有 eta/eta-squared 的例程?
我正在研究非线性微分方程.我所做的是平均超过100个不同初始条件值的位置.
我在gsl中使用了odeiv.对于每个初始值,时间范围是4*10 ^ 7.然而,程序杀死,一旦我设置了10个不同的初始条件和10 ^ 6的时间范围.这是一种限制.
我的电脑有8个内核和16GB内存.我认为这不是那么大.
我将把编码的一部分.有人帮我这个吗?谢谢.
long long int i, j, k;
double const y_i = 0, dydt_i = 0;
double n = 10;
long long int tmax = 1000000;
double A[tmax];
for (j=0; j < n; j++)
{
double y_j = y_i + 0.001*j;
double dydt_j = dydt_i;
t = 0.0;
double y[2] = {y_j, dydt_j};
gsl_odeiv2_system sys = {func, jac, 2, ¶ms};
gsl_odeiv2_driver * d = gsl_odeiv2_driver_alloc_y_new (&sys, gsl_odeiv2_step_rk8pd, 1e-6, 1e-6, 0.0);
for (i=0; i< tmax; …Run Code Online (Sandbox Code Playgroud) r ×3
c ×2
gsl ×2
arrays ×1
correlation ×1
intersection ×1
ode ×1
radio ×1
regression ×1
trigonometry ×1