"filename = 'C:\Users\Administrator\Desktop\第二次个人赛2023.7.11-13\各项分数.xlsx'; sheet = 2; range = 'A2:A13491'; data = xlsread(filename, sheet, range); ecdf_values = zeros(size(data)); for i = 1:size(data, 2) ecdf_values(:, i) = ecdf(data(:, i)); end figure; hold on; colors = ['b', 'r', 'g', 'm', 'c']; % 可以根据需要设置更多颜色 for i = 1:size(data, 2) plot(sort(data(:, i)), ecdf_values(:, i), colors(i)); end hold off; title('经验分布函数'); legend('列1', '列2', '列3', '列4', '列5'); % 根据实际列数设置标签"出现“Subscripted assignment dimension mismatch. Error in Untitled2 (line 7) ecdf_values(:, i) = ecdf(data(:, i));”
时间: 2024-01-08 18:04:10 浏览: 147
根据你提供的代码,出现错误的原因是在第7行的代码中,`ecdf`函数返回的ECDF值与`ecdf_values`数组的维度不匹配。`ecdf`函数返回的ECDF值是一个列向量,而`ecdf_values`数组是一个矩阵,所以无法进行赋值操作。
为了解决这个问题,你可以将`ecdf_values`改为一个三维数组,其中第三维表示每个变量的索引。修改后的代码如下:
```matlab
filename = 'C:\Users\Administrator\Desktop\第二次个人赛2023.7.11-13\各项分数.xlsx';
sheet = 2;
range = 'A2:A13491';
data = xlsread(filename, sheet, range);
ecdf_values = zeros(size(data, 1), size(data, 2), size(data, 2));
for i = 1:size(data, 2)
ecdf_values(:, :, i) = ecdf(data(:, i));
end
figure;
hold on;
colors = ['b', 'r', 'g', 'm', 'c']; % 可以根据需要设置更多颜色
for i = 1:size(data, 2)
plot(sort(data(:, i)), ecdf_values(:, :, i), colors(i));
end
hold off;
title('经验分布函数');
legend('列1', '列2', '列3', '列4', '列5'); % 根据实际列数设置标签
```
这样,`ecdf_values`将成为一个三维数组,其中第一维表示数据的行数,第二维表示数据的列数,第三维表示每个变量的索引。这样可以保证`ecdf_values`与`data`的维度匹配。
请确保你已将数据文件路径替换为正确的路径,并确保文件存在。如果还有其他问题,请随时提问。
阅读全文