MATLAB中ANOVAN矩阵数据的格式化
我有一个数据值矩阵,看起来有点像这样,但要大得多(2000多行,30多列): 因此,您可以看到,它主要由NaN值填充。当然,我感兴趣的是由值填充的单元格 我希望能够在这个数据集上运行anovan,不幸的是,它太大,无法手动重新格式化。我要做的是让脚本在矩阵中运行,找到矩阵中不是NaN的每个值及其索引,并为anovan输入创建三个数组: 数值=[12 3 18 42 68 14 26…] 行=[1 1 2 2…] 列=[2 3 5 7 1 3 11…] 行和列对应于研究中的评分者和评分者,这就是为什么它们对我来说保留每个值的精确索引非常重要 不过,我不知道该怎么做 我尝试过使用find,但无法让它执行我想要的操作MATLAB中ANOVAN矩阵数据的格式化,matlab,matrix,Matlab,Matrix,我有一个数据值矩阵,看起来有点像这样,但要大得多(2000多行,30多列): 因此,您可以看到,它主要由NaN值填充。当然,我感兴趣的是由值填充的单元格 我希望能够在这个数据集上运行anovan,不幸的是,它太大,无法手动重新格式化。我要做的是让脚本在矩阵中运行,找到矩阵中不是NaN的每个值及其索引,并为anovan输入创建三个数组: 数值=[12 3 18 42 68 14 26…] 行=[1 1 2 2…] 列=[2 3 5 7 1 3 11…] 行和列对应于研究中的评分者和评分者,这就是为
[r c v] = find(~isnan(datamatrix)) %% doesn't work
编辑:我突然想到我可以做:
[r c v] = find(datamatrix)
不过,这将包括[RCV]输出中的所有NaN值。在这种情况下,我如何遍历V数组并删除NaN值及其相应的R和C值
编辑2:划破它。我忘记了我的一些值是0,所以我不能使用FIND命令。您可以从数据矩阵中提取所有非NaN数字及其索引,如下所示:
i = find(~isnan(datamatrix));
values = datamatrix(i);
[rows,columns] = ind2sub(size(datamatrix),i);
对于包含的示例数据,这将导致:
rows' = [2 1 1 2 1 1 2]
columns' = [ 1 2 3 3 5 7 11]
values' = [68 12 3 14 18 42 26]
这就是所有的指数和它们对应的值。如果您需要以特定的方式订购,则必须单独订购 啊,我知道我快要弄明白了,但我不知道ind2sub命令!谢谢
rows' = [2 1 1 2 1 1 2]
columns' = [ 1 2 3 3 5 7 11]
values' = [68 12 3 14 18 42 26]