在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
matlab报错大家帮我看看
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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
endsubjfolder = 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解决 无用评论 打赏 举报 编辑记录