我编写了一个代码,用一些数字替换矩阵中的非数字值。 现在,为了测试它,我想允许MATLAB接受非数字条目。
我的代码以提示符开头:
matrix_input = input('Please enter the matrix: x=');
如果我输入类似[1,2,3; 4,5,?]的内容,MATLAB会给出错误:不平衡或意外的括号或括号。由于所有括号似乎都是平衡的,我认为这是由于非数字输入。是否可以使MATLAB允许非数字输入?
答案 0 :(得分:4)
您需要cell array。单元阵列的每个单元可以保存任何类型的数据。大括号用于创建像这样的单元格数组:
cell_array = {1, 2, 3; '4', '?', 6};
如果使用常规大括号访问单元格数组中的元素,则会获得一个单元格。如果使用花括号,则可以获得单元格的内容。正是这种差异往往会让人们看到细胞阵列。
cell_array(1) % Returns a 1x1 cell containing the value 1.
cell_array{1} % Returns 1
修改强>
出于好奇,您使用什么代码来替换非数字值?对于一个单元阵列,我想到了以下内容:
idx = cellfun(@isnumeric, cell_array);
cell_array(~idx) = {NaN};
matrix = cell2mat(cell_array);
如评论中所述,您还可以使用结构数组:
struct_array = struct('v', {1, 2, 3; '4', '?', 6});
这将创建一个结构数组,其中字段v
包含值。但是,我想不出一个简洁的方法来进行更换。