我正在研究一个模型,使用matlab作为其他模型的图形表示。因此,我希望有一个可以用字母和数字更新的矩阵。数字代表速度,而例如' - '代表空白部分。在matlab文档和互联网上,我发现了许多有趣的提示,但不是我需要的。 提前谢谢!
答案 0 :(得分:3)
您不能在矩阵中表示numeric
类型(整数/浮点)和char
类型数据的数据。但是,您可以使用与矩阵类似的cells
,并且可以在每个单元格中保存不同的数据类型。这是一个例子。
A={[1 2 3],'hello';'world',[4,5,6]'}
A =
[1x3 double] 'hello'
'world' [3x1 double]
这里第一个单元格包含行向量,第二个和第三个单元格包含字符串,第四个单元格包含列向量。索引到单元格的索引类似于数组,只有一个小的区别:使用{}
对索引进行分组。例如,要访问第二行第一列中的元素,请执行
A{2,1}
ans =
world
您还可以访问单元格内的数组元素,如
A{2,2}(2)
ans =
5
答案 1 :(得分:0)
如果您想要存储数字和字符类型数据的混合,yoda has the correct suggestion:使用cell arrays。
但是,根据您描述的示例,您可能还有其他选择。如果矩阵中的字符条目是为了识别“缺失数据”,那么使用包含NaN
或Inf
等唯一值的纯数字矩阵来识别数据点会更有意义。是空的或数据不可用的地方。
当对矩阵执行操作时,您必须仅索引有限的元素(例如,使用ISFINITE)并对它们执行计算。甚至some functions in the Statistics Toolbox将执行忽略NaN
值的操作。这可能是一种更简洁的方法,因为您可以将矩阵保持为数字类型('single'
or 'double'
precision)而不必混淆单元格数组。