您好我有一个庞大的excel表,我想提取特定化合物的值。 Matrix以72个街区重复进行,其中车辆级别以不同的道路坡度和化合物以及驾驶条件重复进行。
cb=[Vehicleclass_raw,Gradient_raw,Component_raw];
size cb= 119952x3 cell
Vehicleclass_airquis is string with 37 elements
所以我认为我根据标准梯度车辆类和组件对其进行排序,这是代码打击。它适用于前30个元素,然后崩溃,错误消息是订阅分配维度不匹配。 outval_aq(i,:) =(行)。我无法弄清楚错误是什么。感谢Matthias的帮助
outval_aq = ones(37,72)*119953;
for i=1:37
rows = find(strcmp(cb(:,1),Vehclass_airquis(i)) & strcmp(cb(:,2),'0%') & strcmp(cb(:,3),'NOx'));
if ~isempty(rows)
outval_aq(i,:) = (rows)
end
end
答案 0 :(得分:0)
在Matrix中,每行具有相同数量的元素。在您的情况下,您将outval_aq
初始化为37x72矩阵,但rows
只有60个元素。解决方案可能如下:
%pad rows with nans to make it the required size:
rows(end+1:72)=nan
outval_aq(i,:) = (rows)
%write only the first 60 elements to the matrix, leave the remaining untouched:
outval_aq(i,1:numel(rows)) = (rows)
或者您可以将outval_aq更改为包含向量的单元格数组。