使用字符串下标错误从矩阵中提取元素
Extracting elements from matrix using strings subscript error
您好,我有大量 excel table,我想提取特定化合物的值。矩阵在 72 个块中重复,其中 vehicle-class 在不同的道路坡度、化合物和驾驶条件下重复。
cb=[Vehicleclass_raw,Gradient_raw,Component_raw];
size cb= 119952x3 cell
Vehicleclass_airquis is string with 37 elements
所以我想我根据标准梯度车辆 class 和组件对它进行排序,这是代码打击。它适用于前 30 个元素,然后崩溃,错误消息是下标赋值维度不匹配。 outval_aq(i,:) =(行)。我不知道错误是什么。感谢马蒂亚斯的帮助
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
在矩阵中,每一行都有相同数量的元素。在您的情况下,您将 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 更改为包含向量的元胞数组。
您好,我有大量 excel table,我想提取特定化合物的值。矩阵在 72 个块中重复,其中 vehicle-class 在不同的道路坡度、化合物和驾驶条件下重复。
cb=[Vehicleclass_raw,Gradient_raw,Component_raw];
size cb= 119952x3 cell
Vehicleclass_airquis is string with 37 elements
所以我想我根据标准梯度车辆 class 和组件对它进行排序,这是代码打击。它适用于前 30 个元素,然后崩溃,错误消息是下标赋值维度不匹配。 outval_aq(i,:) =(行)。我不知道错误是什么。感谢马蒂亚斯的帮助
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
在矩阵中,每一行都有相同数量的元素。在您的情况下,您将 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 更改为包含向量的元胞数组。