为什么以下这一段代码在matlab 2022中执行时报错% 读取Shuju表格中的数据并保存胸径数据到xiongj表格 shuju = readtable('Shuju.xlsx'); xiongj = table(shuju{:, 4}, 'VariableNames', {'xiongj'}); % 获取中心树的胸径数据 writetable(xiongj, 'xiongj.xlsx'); % 读取zyshu表格,并依次读取最近的4棵树的胸径数据到xiongj表格 zyshu = readtable('zyshu.xlsx'); for i = 1:size(zyshu, 1) for j = 2:5 idx = zyshu{i, j}; xiongj{i, j} = shuju{idx, 4}; end end writetable(xiongj, 'xiongj.xlsx'); % 遍历xiongj表格,比较每一行的胸径数据,并计算比较结果的平均值 daxiaobi = zeros(size(xiongj,1),2);%创建一个和xiongj一样大小的数组,用来保存结果 sum_val=0; for i = 1:size(xiongj, 1) row_val = xiongj{i, 2:end}; %取要比较的各列的值 n = length(row_val); %取列的个数 if xiongj{i, 1} <row_val %判断当前行的第一个元素是否小于row_val向量中的元素,若小于则计数器sum_val加1 sum_val=+1; end daxiaobi{i,2} = sum_val / n; end % 保存daxiaobi表格 writetable(daxiaobi, 'daxiaobi.xlsx'); % 在命令行窗口输出daxiaobi表格 disp(daxiaobi);
时间: 2024-03-11 12:43:47 浏览: 46
AIpingtai1003shuju_微博数据_
在Matlab 2022中执行该代码时报错,是因为在第16行中的计数器`sum_val`的自增操作写成了`sum_val=+1`,应该改为`sum_val = sum_val + 1`,否则`sum_val`的值始终为1,导致计算结果错误。另外,在第21行中,应该使用逐一比较的方式比较向量中的元素,而不是直接比较两个向量是否相等,可以使用`all`函数实现向量的逐一比较,改为`if all(xiongj{i, 1} < row_val)`即可。
阅读全文