我想从 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 eg 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 行与其他行没有区别,并且不包含任何特殊字符或值。我不知道他们有什么问题。