P = [0.5, 0.5]; % 设有信源概率数组P edges = [0,cumsum(P)]; x = rand(1,10); symbols = discretize(x,edges(2:end),'IncludedEdge','right');数组得到的有NaN值
时间: 2024-03-20 14:41:36 浏览: 82
P9648 的小数据,d
如果离散化结果包含`NaN`值,可能是因为随机数序列`x`中的某些值超出了信源概率数组`P`的范围,导致离散化时无法匹配到合适的区间。解决这个问题可以在调用`discretize`函数时增加一个`'includeedge'`参数,并将其值设为`'includelower'`或`'includeboth'`,这样离散化结果中就不会出现`NaN`值了。
修改后的代码如下:
```matlab
P = [0.5, 0.5];
edges = [0, cumsum(P)];
x = rand(1, 10);
symbols = discretize(x, edges, 'IncludedEdge', 'right', 'IncludeEdge', 'includeboth');
```
这里将`'IncludedEdge'`参数的值设为`'right'`,将`'IncludeEdge'`参数的值设为`'includeboth'`,即将边界值归入右侧区间,并包含边界值。这样就能够得到一个无`NaN`值的离散化结果了。
阅读全文