`苏苏苏苏 2023-03-30 22:18 采纳率: 33.3%
浏览 12

matlab报错大家帮我看看

在matlab上写了一段求皮尔逊的代码,如下:
subjfolder = dir('C:\Users\33796\Desktop\Data');
subjfolder(1:2) = [ ];
for subji =1:30
subname = double(subjfolder(subji).name);
data=load([subjfolder(subji).folder '' subname]);
for i=1:2290
for j=1:2290
[r,p]=corr(data(i,:),data(j,:),'type','pearson'); //这句报错说输入必须为单精度或者双精度浮点值,不知道怎么改
Pc(i,j)=r;
end
end

  • 写回答

2条回答 默认 最新

  • qq_38358909 2023-03-30 22:26
    关注

    这个错误是因为corr函数需要输入的是单精度或双精度浮点数组,而不是整数数组。因此,您需要将data数组转换为浮点数数组,可以使用以下语句来实现:

    data = double(data);

    在您的代码中,您还使用了一个错误的语法,即在for循环中使用了for作为循环变量,请将其替换为正确的循环变量名称。

    此外,您还有一个缩写错误,即subjfolder(subii),应该是subjfolder(subji)。

    最终代码如下:

    subjfolder = dir('C:\Users\133796\Desktop\Data');
    subjfolder(1:2) = [];
    for subji = 1:30
    subname = double(subjfolder(subji).name);
    data = load([subjfolder(subji).folder '' subname]);
    data = double(data);
    for i = 1:2290
    for j = 1:2290
    [r, p] = corr(data(i,:), data(j,:), 'Type', 'Pearson');
    PC(i,j) = r;
    end
    end
    end

    
    subjfolder = dir('C:\Users\133796\Desktop\Data');
    subjfolder(1:2) = [];
    for subji = 1:30
    subname = double(subjfolder(subji).name);
    data = load([subjfolder(subji).folder '' subname]);
    data = double(data);
    for i = 1:2290
    for j = 1:2290
    [r, p] = corr(data(i,:), data(j,:), 'Type', 'Pearson');
    PC(i,j) = r;
    end
    end
    end
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月30日