MATLAB使用print输出元胞数组元素触发报错问题求解
问题场景
尝试创建支持后续动态追加整数元素的变长向量数组,编写测试代码如下:
a={[1 1 1 1 1]; [3 3 3 3 3 3 3 3 3]; [4 4]; [5]}; print(a);
运行代码直接触发报错,报错截图如下:
需要定位报错原因,给出可正常显示元胞数组所有元素的修改方案。
报错原因
- 代码中定义的元胞数组本身语法完全合法:元胞数组每个元素可以独立存储不同维度、不同长度的矩阵/向量,天然支持后续动态追加不同长度的整数元素,不存在定义错误。
- 报错根源是函数误用:MATLAB里的
print函数仅用于导出、打印图形窗口(Figure)的绘图内容,不支持普通变量、元胞数组的控制台输出,传入元胞数组作为参数时会直接触发参数类型不匹配的运行错误。
修改方法
将错误的print输出替换为MATLAB支持的普通变量输出方式即可,三种常用实现:
- 省略行尾分号直接输出变量(开发调试最常用)
% 定义元胞数组后不加行尾分号,运行时自动在控制台打印变量结构 a={[1 1 1 1 1]; [3 3 3 3 3 3 3 3 3]; [4 4]; [5]}
- 调用通用显示函数
disp输出
a={[1 1 1 1 1]; [3 3 3 3 3 3 3 3 3]; [4 4]; [5]}; disp(a)
- 调用元胞专用展示函数
celldisp,会递归展开显示每个元胞内存储的全部元素值,不会做截断
a={[1 1 1 1 1]; [3 3 3 3 3 3 3 3 3]; [4 4]; [5]}; celldisp(a)
以上写法运行后都可以正常查看元胞数组的内容。后续动态追加元素直接使用元胞数组赋值语法即可,例如追加一个长度为3的全6向量可写为a{end+1} = [6 6 6];。
内容的提问来源于stack exchange,提问作者Vladyslav Melnikov
相关产品推荐
相关产品推荐

