matlab元胞内容引用自非元胞数组对象。
时间: 2023-08-01 15:10:04 浏览: 308
Matlab 的元胞数组(cell array)可以存储不同类型的数据,包括数组、字符串、结构体和函数等。在使用元胞数组时,需要注意元胞数组中的每个元素都是一个对象,可以包含不同类型的数据。如果元胞数组中的某个元素包含的是非元胞数组对象,则需要使用花括号 `{}` 来引用该元素。
例如,假设有一个元胞数组 `C`,其中第一个元素为向量,第二个元素为字符串,第三个元素为结构体,第四个元素为函数,第五个元素为数字等等。要引用第二个元素(字符串),可以使用如下代码:
```
C = { [1, 2, 3], 'Hello', struct('name', 'Tom', 'age', 20), @sin, 123 };
str = C{2}; % 使用花括号引用第二个元素(字符串)
disp(str); % 输出结果为 'Hello'
```
需要注意的是,如果使用圆括号 `()` 来引用元胞数组中的元素,则返回的是一个元胞数组,而不是该元素包含的非元胞数组对象。例如,使用代码 `str = C(2);` 来引用第二个元素,返回的是一个元胞数组,而不是字符串 `'Hello'`。
相关问题
元胞内容引用自非元胞数组对象。
这个错误通常发生在 MATLAB 中,它表示您尝试从非元胞数组对象中引用元胞内容。元胞数组是一种特殊类型的数组,其元素可以包含不同类型的数据,包括其他数组、结构体等。如果您尝试从非元胞数组对象中引用元胞内容,就会出现这个错误。
要解决这个问题,您需要确保您正在引用的对象是元胞数组对象。您可以使用 iscell 函数来检查一个变量是否为元胞数组,或者使用 cell 函数将一个非元胞数组转换为元胞数组。例如,如果您有一个名为 myarray 的数组对象,您可以使用以下代码将其转换为元胞数组:
```
mycellarray = cell(myarray);
```
然后,您可以使用花括号 ({}) 操作符从元胞数组中引用元素。例如,如果您想引用 mycellarray 的第一个元素,您可以使用以下代码:
```
myelement = mycellarray{1};
```
这将把 mycellarray 的第一个元素赋值给 myelement 变量。
matlab修正 元胞内容引用自非元胞数组对象。 出错 addnew (line 29) data{m+(i-1), match_col} = data_1{i,b_col};
这个错误通常是因为您尝试将非元胞数组的值赋给元胞数组的元素。在这种情况下,您需要使用花括号{}来引用元胞数组的元素而不是圆括号()。
根据您提供的代码,错误发生在第29行,我们可以看到这个问题可能是在以下代码中引起的:
```
data{m+(i-1), match_col} = data_1{i,b_col};
```
请确保 `data` 数组是元胞数组,并且 `data_1` 数组也是元胞数组。如果 `data_1` 是非元胞数组,那么您需要将其转换为元胞数组,例如:
```
data_1 = num2cell(data_1);
```
如果您已经将 `data_1` 转换为元胞数组,但仍然遇到此错误,则需要检查 `b_col` 和 `match_col` 变量的值是否正确,以及它们是否与 `data` 数组的维度匹配。
阅读全文