【发布时间】:2022-01-02 17:18:28
【问题描述】:
我想从 Toker 等人的论文中应用具有特定功能 (chaos;https://figshare.com/s/80891dfb34c6ee9c8b34) 的外部代码。 2020 (https://www.nature.com/articles/s42003-019-0715-9#Sec1) 以测试我的数据是随机的还是混乱的。
我尝试了循环,for,cellfun,但在这种情况下这些都不起作用。
当我尝试使用以下代码时:
T = readtable('ibfrq3.csv');
C = table2array(T);
D = num2cell(C, 2);
rowSums = cellfun(@sum, D)
chaos = cellfun(@chaos, D)
我收到三个错误:
Unable to perform assignment because the size of the left side is 1-by-14 and the size of the right side is
1-by-3.
Error in chaos>surrogate (line 989)
surr(k,:)=unwrap(horzcat(st,parts{randperm(j)},en));
Error in chaos (line 157)
[surr, params] = surrogate(zscore(surr_y), num_surr, 'CPP', 1, 1);
有趣的是,我能够使函数工作,但仅适用于单独的行(通过将它们复制到方括号中并标记为 y 例如y = [1,2,3,4,5,6,7,8,9,5,6,7,8,8])。
我想要的输出是带有 chaos 函数输出的字符串(或者理想情况下是添加到我的 .csv 中的一列)(每行一个字:“随机”或“混乱”,具体取决于结果)。
我的数据在这里:https://drive.google.com/file/d/1I2BChrv0iqNr1dcEKTQKxKF7DDl_hF23/view?usp=sharing .csv 包含不同时间段的等位基因频率。
编辑: 尝试
numRows = size(C, 1);
for row = 1:numRows
result(row) = chaos(C(row,:));
end
产生与上述类似的错误。
我还尝试在我的数据上逐行运行代码以检查哪一行导致使用问题
row1 = C(1,:);
chaos(row1)
对于每一行。有趣的是,它可以完美地为第 1、3-9、11-100 行提供所需的输出。第 2 行和第 10 行与其他行没有区别,并且不包含任何特殊字符或值。我不知道他们有什么问题。
【问题讨论】:
-
SO 不是免费的编码服务。请尝试自己解决问题。首先将其分解为一组较小的问题
-
您提到尝试一些解决方案。在此处展示您的尝试,包括所有错误详细信息。更多建议请参见How to Ask
-
请提供足够的代码,以便其他人更好地理解或重现问题。
标签: function matlab rows chaos