MATLAB中的采样数据

MATLAB中的采样数据,matlab,Matlab,我有两条数据。一个是实际的fulldata,它是一个49625x6数字数据集,另一个是该数据的索引,目标类名为Book2,它是49625x1 Book2有六个名称(字符串)反复重复以匹配fulldata数据集条目。我想使用Book2从fulldata中提取1000个样本,其中25%的样本为“蓝色”,75%的样本为“红色”,然后将其包含在名为sampledata的新子样本中 如何在MATLAB中实现这一点 伪代码: 从Book2中选择250个蓝色样本,不确定如何“选择”250个随机“蓝色”样本 b

我有两条数据。一个是实际的
fulldata
,它是一个49625x6数字数据集,另一个是该数据的索引,目标类名为
Book2
,它是49625x1

Book2有六个名称(字符串)反复重复以匹配fulldata数据集条目。我想使用Book2从fulldata中提取1000个样本,其中25%的样本为“蓝色”,75%的样本为“红色”,然后将其包含在名为
sampledata
的新子样本中

如何在MATLAB中实现这一点

伪代码:

从Book2中选择250个蓝色样本,不确定如何“选择”250个随机“蓝色”样本
bluesample=indX(Book2,:)
Book2(indX,:)
不确定

从Book2中选择750个红色样本,再次不确定如何“选择”750个随机“红色”样本
redsample=indX(Book2,;)
Book2(indX,:)
此处再次不确定

将蓝色和红色样本组合成子样本

subsample = join(bluesample, redsample)
查找子样本的索引并从fulldata创建sampledata:

sampledata = subsample(indX(fulldata), :) This line is probably wrong
这是两个数据集的图像:

Book2中的每一行都与fulldata中的行匹配。我正在尝试使用Book2从fulldata中选择一定数量的“正常”和一定数量的“不正常”(是的,我知道它们的名称不合适)数据,因为Book2是fulldata的索引,包含类标签

因此,就我的数据集而言,可以这样说:

Choose 250 random samples of the string "normal." from Book2 and log the row number.
Choose 750 random samples of the string "not normal." from Book2 and log the row number.
Combine the two random samples of row numbers together.
Make a new dataset (1000x6) using the combined row numbers (above) of fulldata.

使用stratch提取“正常”记录:

normIdx = strmatch('normal.', Book2);
normalSubset = fulldata(normIdx, :);
然后,为了生成250个随机非重复整数的列表,我在谷歌上搜索了“matlab非重复随机整数列表”,并从中得出:

所以现在来获取随机选择的250条正常记录

normalSample = normalSubset (p, :);
normalSample
将为250 x 6。现在对“not normal”执行相同的操作。获取
notNormalSample
(750 x 6),然后合并以获得

sample = [normalSample ; notNormalSample ]
因此,在
sample
中,所有法线都将显示在非法线之前,如果要将它们混合使用,请再次使用
randperm()

sample = sample(randperm(1000), :);

我什么都没试过本:(我不太会使用matlab,所以需要帮助。通常我会尝试,但我不知道如何使用循环等。但我不知道如何使用循环等。查阅matlab教程,问题也有点模糊,这些表格中是否有红色和蓝色的字符串,可能会给出一些表格的示例,并说明您想要的内容do@Ben不当然,如果这为你澄清了什么的话。我也提到过第二册有6个“名字”是的,它们是字符串。是的,这对问题来说是一个很大的改变,现在更清楚了。嗨,丹,最后一行有一点错误,这将只选择1000x1而不是1000x6。仍然接受你的答案,你可能想更正它,让其他人看看这个问题。
sample = sample(randperm(1000), :);