Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab:模运算的帮助_Matlab_Modulus - Fatal编程技术网

Matlab:模运算的帮助

Matlab:模运算的帮助,matlab,modulus,Matlab,Modulus,我正在尝试实现一个具有以下等式的映射/函数 x_n+1=2*x_n模1 此映射的输出将是一个二进制数,该二进制数为0/1 因此,我使用rand生成了第一个样本x_1。下面是代码。问题是我得到的是真实的数字。使用数字计算器时,我可以得到二进制,而使用Matlab时,我得到的是实数。请帮我找出哪里出了问题。多谢各位 >> x = rand(); >> x x = 0.1647 >> y = mod(2* x,1) y = 0.3295

我正在尝试实现一个具有以下等式的映射/函数

x_n+1=2*x_n模1

此映射的输出将是一个二进制数,该二进制数为0/1

因此,我使用rand生成了第一个样本x_1。下面是代码。问题是我得到的是真实的数字。使用数字计算器时,我可以得到二进制,而使用Matlab时,我得到的是实数。请帮我找出哪里出了问题。多谢各位

>> x = rand();
>> x

x =

    0.1647

>> y = mod(2* x,1)

y =

    0.3295

二元变换似乎是从[0,1)连续到[0,1)连续的变换。如果您试图实现二元映射,我看您的测试代码没有任何问题。您应该期待[0,1]中的输出。

二元变换似乎是从[0,1)连续到[0,1]连续的变换[0,1)连续。如果您试图实现并矢映射,我看您的测试代码没有任何错误。您应该期待[0,1]中的输出。

并矢变换似乎是从[0,1)连续到[0,1)连续。如果您试图实现并矢映射,我看您的测试代码没有任何错误。您应该期待[0,1]中的输出。

并矢变换似乎是从[0,1)连续到[0,1)连续。如果您试图实现并矢映射,我看您的测试代码没有任何错误。您应该期望[0,1]中的输出我误解了您的问题,因为我集中于您的假设,即输出应该是二进制的[
0
1
],这是错误的

要像在您提供的链接中一样再现并矢变换的输出,您的代码工作正常(对于1个值),您可以使用此函数计算
N
项(假设起始项
x0
):

请注意,输出不必是二进制的,它必须介于
0
1
之间


在整数的情况下,
mod(WhateverInteger,1)
的结果总是
0
,但在实数的情况下(这里使用的是实数),
mod(AnyRealNumber,1)
的结果将是小数部分,因此一个介于
0
1
之间的数字。(
1
在数学上被排除在外,
0
可以通过
mod(x,1)
操作实现,但在serie的情况下,这意味着所有的连续项也将为零)。

我误解了你的问题,因为我的重点是假设你的输出应该是二进制的[
0
1
],这是错误的

要像在您提供的链接中一样再现并矢变换的输出,您的代码工作正常(对于1个值),您可以使用此函数计算
N
项(假设起始项
x0
):

请注意,输出不必是二进制的,它必须介于
0
1
之间


在整数的情况下,
mod(WhateverInteger,1)
的结果总是
0
,但在实数的情况下(这里使用的是实数),
mod(AnyRealNumber,1)
的结果将是小数部分,因此一个介于
0
1
之间的数字。(
1
在数学上被排除在外,
0
可以通过
mod(x,1)
操作实现,但在serie的情况下,这意味着所有的连续项也将为零)。

我误解了你的问题,因为我的重点是假设你的输出应该是二进制的[
0
1
],这是错误的

要像在您提供的链接中一样再现并矢变换的输出,您的代码工作正常(对于1个值),您可以使用此函数计算
N
项(假设起始项
x0
):

请注意,输出不必是二进制的,它必须介于
0
1
之间


在整数的情况下,
mod(WhateverInteger,1)
的结果总是
0
,但在实数的情况下(这里使用的是实数),
mod(AnyRealNumber,1)
的结果将是小数部分,因此一个介于
0
1
之间的数字。(
1
在数学上被排除在外,
0
可以通过
mod(x,1)
操作实现,但在serie的情况下,这意味着所有的连续项也将为零)。

我误解了你的问题,因为我的重点是假设你的输出应该是二进制的[
0
1
],这是错误的

要像在您提供的链接中一样再现并矢变换的输出,您的代码工作正常(对于1个值),您可以使用此函数计算
N
项(假设起始项
x0
):

请注意,输出不必是二进制的,它必须介于
0
1
之间

在整数的情况下,
mod(WhateverInteger,1)
的结果总是
0
,但在实数的情况下(这里使用的是实数),
mod(AnyRealNumber,1)
的结果将是小数部分,因此一个介于
0
1
之间的数字。(
1
在数学上被排除在外,
0
可以通过
mod(x,1)
操作实现,但在serie中,这意味着所有的连续项也将为零)。

使用
x=randi([0 1])
获得0和1之间的整数,并注意
mod(x,1)
将始终返回0(1除法中没有余数)。您可能希望使用
y=mod(2*x,2)
use
x=randi([01])
获得0到1之间的整数,并注意
mod(x,1)
将始终返回0(1除法中没有余数)。您可能希望使用
y=mod(2*x,2)
use
x=randi([01])function x = dyadic(x0,n)

x = zeros(n,1) ; %// preallocate output vector
x(1) = x0 ;      %// assign first term

for k=2:n
    x(k) = mod( 2*x(k-1) , 1) ; %// calculate all terms of the serie
end