将运算符从 Matlab 转换为 R
Convert operator from Matlab to R
我在 Matlab 中有以下代码:
alpha=5.5; beta=3.1; a=0; b=1; c=2.5;
X=0; Y=c; % Initial values
while Y > gamma(alpha+beta)/gamma(alpha)/gamma(beta)...
* X.^(alpha-1).* (1-X).^(beta-1);
U=rand; V=rand; X=a+(b-a)*U; Y=c*V;
end;
X;
我想转换成 R。这是我的尝试(运算符有问题):
alpha <- 5.5
beta <- 3 .1
a <- 0
b <- 1
c <- 2.5
X <- 0
Y <- c
while(Y > gamma(alpha+beta)/gamma(alpha)/gamma(beta))
{
*X.^(alpha-1).*(1-X).^(beta-1) # incorrect line
U=runif(1, 0, 1)
V=runif(1, 0, 1)
X=a+(b-a)*U
Y=c*V
}
print (X)
beta
的赋值无效,您需要 {
与 while
在同一行:
alpha <- 5.5
beta <- 3.1
a <- 0
b <- 1
c <- 2.5
X <- 0
Y <- c
while (Y > gamma(alpha + beta)/gamma(alpha)/gamma(beta) * X^(alpha - 1) * (1 - X)^(beta - 1)) {
U <- runif(1, 0, 1)
V <- runif(1, 0, 1)
X <- a + (b - a) * U
Y <- c * V
}
检查你的代码以确保你在做你认为你在做的事情,在 while
之后的行上没有进行任何赋值,我的循环一直在立即退出(但是 运行 没有错误)并为 X
.
打印 0
编辑:
由于@Khashaa
的好地方,现在可以正确运行
我在 Matlab 中有以下代码:
alpha=5.5; beta=3.1; a=0; b=1; c=2.5;
X=0; Y=c; % Initial values
while Y > gamma(alpha+beta)/gamma(alpha)/gamma(beta)...
* X.^(alpha-1).* (1-X).^(beta-1);
U=rand; V=rand; X=a+(b-a)*U; Y=c*V;
end;
X;
我想转换成 R。这是我的尝试(运算符有问题):
alpha <- 5.5
beta <- 3 .1
a <- 0
b <- 1
c <- 2.5
X <- 0
Y <- c
while(Y > gamma(alpha+beta)/gamma(alpha)/gamma(beta))
{
*X.^(alpha-1).*(1-X).^(beta-1) # incorrect line
U=runif(1, 0, 1)
V=runif(1, 0, 1)
X=a+(b-a)*U
Y=c*V
}
print (X)
beta
的赋值无效,您需要 {
与 while
在同一行:
alpha <- 5.5
beta <- 3.1
a <- 0
b <- 1
c <- 2.5
X <- 0
Y <- c
while (Y > gamma(alpha + beta)/gamma(alpha)/gamma(beta) * X^(alpha - 1) * (1 - X)^(beta - 1)) {
U <- runif(1, 0, 1)
V <- runif(1, 0, 1)
X <- a + (b - a) * U
Y <- c * V
}
检查你的代码以确保你在做你认为你在做的事情,在 while
之后的行上没有进行任何赋值,我的循环一直在立即退出(但是 运行 没有错误)并为 X
.
0
编辑: 由于@Khashaa
的好地方,现在可以正确运行