使用字符串下标错误从矩阵中提取元素

时间:2015-03-25 13:27:14

标签: excel matlab strcmp

您好我有一个庞大的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

1 个答案:

答案 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更改为包含向量的单元格数组。