执行转换时,cell2mat从单元格数组中删除一列

时间:2018-09-11 03:09:16

标签: matlab matrix cell-array

我有以下代码:

% Code to import data from .csv files into cell arrays called strain_trans_data, strain_ax_data, and load_data

strain_trans_data = cell2mat(strain_trans_data);
strain_trans_data = strain_trans_data*-1; % trans strain to -trans strain
strain_ax_data = cell2mat(strain_ax_data);
load_data = cell2mat(load_data);
new_trans_data = [];
new_ax_data = [];
new_load_data = [];
regressions = {'File name','y-int axial','slope axial','y-int trans','slope trans','v'};

% Rest of the code...

代码从一些.csv文件中导入数据,我通过执行线性回归来分析这些文件。为了执行线性回归并绘制数据,我需要将单元格数组转换为矩阵。当我导入大量数据(从10个以上的.csv文件中导入11个文件)时,strain_trans_data = cell2mat(strain_trans_data);strain_ax_data = cell2mat(strain_ax_data);可以正常工作,它们只是将单元格数组转换为矩阵。由于有11组数据,因此单元格数组为nx11,最终矩阵为nx11

由于某种原因,load_data = cell2mat(load_data);代替了一个列,因此初始单元格数组为nx11,而最终矩阵为nx10。我尝试使用其他数据集(小于10个),并且此问题似乎仅在这种情况下发生。奇怪的是strain_trans_data = cell2mat(strain_trans_data);strain_ax_data = cell2mat(strain_ax_data);都可以正常工作,这只是最后一次转换带来了问题。知道为什么会这样吗?

编辑:我尝试进入cell2mat函数以查看正在发生的情况,并找到了发生问题的步骤。在m下的图像中是一个nx11 cell

Everything is fine

然后由于某种原因将其更改为nx10 double。单元格数组中的数据可能有问题吗?

What happened?

1 个答案:

答案 0 :(得分:0)

我无法猜测您输入到NestedScrollView中的单元格数组,但是我的猜测是您在单元格数组中有一列具有空单元格。

我可以通过这种方式重现您的问题:

<kendo-grid-column-group title="{{year}}" [headerStyle]="{'text-align': 'center'}" width="380">
        <ul *ngFor="let month of keys(); let i = index">
          <li>
            <kendo-grid-column field="{{month}}" class="no-padding" title="{{month}}" [filterable]="false" [sortable]="false" width="35">
              <ng-template kendoGridCellTemplate let-dataItem let-color="getColor(year,i,dataItem.ca)">
                <span class="whole-cell" [ngStyle]="{'background-color': color.color,'color': color.textColor,'font-weight':'bold','height':'25px','vertical-align': 'middle'}">
                  <label>{{color.Date}}</label>
                </span>
              </ng-template>
            </kendo-grid-column>
          </li>
        </ul>
</kendo-grid-column-group>

cell2mat现在看起来像这样:

C = num2cell(magic(4));
[C{:,3}] = deal([]);

现在我们应用C

C =
  4×4 cell array
    [16]    [ 2]    []    [13]
    [ 5]    [11]    []    [ 8]
    [ 9]    [ 7]    []    [12]
    [ 4]    [14]    []    [ 1]

cell2mat看起来像这样:

A = cell2mat(C);

A是4x4单元格数组,A = 16 2 13 5 11 8 9 7 12 4 14 1 是4x3数字数组。