将输出加权为二进制(0,1)的Matlab数据采样器

将输出加权为二进制(0,1)的Matlab数据采样器,matlab,sampling,Matlab,Sampling,样本概率矩阵: ans = 0.1444 0.0456 0.0138 0.0126 0.0116 0.0107 0.0052 0.1444 0.0456 0.0138 0.0126 0.0116 0.0107 0.0052 0.1222 0.0386 0.0116 0.0106 0.0098 0.0091 0.0044 0.1444 0.0456

样本概率矩阵:

ans =

    0.1444    0.0456    0.0138    0.0126    0.0116    0.0107    0.0052
    0.1444    0.0456    0.0138    0.0126    0.0116    0.0107    0.0052
    0.1222    0.0386    0.0116    0.0106    0.0098    0.0091    0.0044
    0.1444    0.0456    0.0138    0.0126    0.0116    0.0107    0.0052
    0.1222    0.0386    0.0116    0.0106    0.0098    0.0091    0.0044
    0.1889    0.0596    0.0180    0.0164    0.0151    0.0140    0.0067
    0.1333    0.0421    0.0127    0.0116    0.0107    0.0099    0.0048
我已经使用
dataSample
randSample
从我的数据中采集了128个时间,这些数据在matlab中具有
A=(7,7)
大小:

datasample(A,128)


ans =

    0.1333    0.0421    0.0127    0.0116    0.0107    0.0099    0.0048
    0.1222    0.0386    0.0116    0.0106    0.0098    0.0091    0.0044
    0.1889    0.0596    0.0180    0.0164    0.0151    0.0140    0.0067
    0.1889    0.0596    0.0180    0.0164    0.0151    0.0140    0.0067
    0.1333    0.0421    0.0127    0.0116    0.0107    0.0099    0.0048
    0.1444    0.0456    0.0138    0.0126    0.0116    0.0107    0.0052
    0.1222    0.0386    0.0116    0.0106    0.0098    0.0091    0.0044
    ...
但是,我感兴趣的是以二进制格式提供128个7
(128,7)
,其中有两个离散值0和1:

[11101]


我可以写一个循环,并使用某些阈值(即0.5)将这些值向下/向上舍入到0和1,但这肯定会有噪音。是否有一个函数可以在Matlab中以二进制(0,1)输出采样?

有点不清楚二进制格式是什么意思。您是希望对数据应用阈值,还是希望每个数字都有一个二进制表示?或者你只是想知道输出从何而来?很抱歉不清楚,我修改了这个问题。我的意思是,为了简化@Alessiox post,输出格式应该是0或1:
result=datasample(A,128)>=0.5
No。这是无法实现的
datasample()
从输入矩阵
A
返回样本。如果
A
包含浮点数,则
datasample()
也将返回浮点数。这样的浮点数是概率值,所以它们可以是[0;1]范围内的浮点数。恐怕您必须手动执行阈值设置,以便将其硬限制为0或1。我建议您使用分布的平均值,而无需重新缩放。以这种方式,您将始终拥有原始的马尔可夫链值。但是,由于我们讨论的是采样和分布,所以可以获得的点(样本)越多,平均值就越精确。然后可以从@Suever的代码开始,但可以设置
datasample()
mean值,而不是0.5<代码>提取值=数据样本(A,128);结果=提取值>平均值(提取值(:)