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

这个错误是因为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

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/263215
  • 这篇博客你也可以参考下:matlab索引超过矩阵错误,这个程序哪里有问题呀~
  • 除此之外, 这篇博客: MATLAB二维图动画视频制作中的 情况一:对数据进行操作 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    我们先生成一个测试数据(256张尺寸为256*256的渐变图)

    data = zeros(256,256,256,'uint8'); % 注意:imwrite写GIF的时候,只支持uint8类型的数据
    for k = 1:255
        data(:,k+1,k+1) = k;
        data(:,:,k+1) = data(:,:,k+1)+data(:,:,k);
    end
    
    • 写为动图

      dt = 1/32;
      imwrite(data(:,:,1),'test1.gif','LoopCount',Inf,'DelayTime',dt);
      for k = 2:256
          imwrite(data(:,:,k),'test1.gif','WriteMode','append','DelayTime',dt);
      end
      %%名称-值对组 'LoopCount',Inf 使动画连续循环。'DelayTime',1 在每个动画图像显示之间指定了一秒的时滞。'WriteMode':'append'追加模式
      
    • 写为视频

      fps = 32;
      myVideo = VideoWriter('test1.avi'); 
      myVideo.FrameRate = fps; %确定帧速率32
      open(myVideo);%打开视频
      for k = 1:256
          writeVideo(myVideo,data(:,:,k)); %将视频数据写入到文件
      end
      close(myVideo); 
      

    在这里插入图片描述


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^