首页 文章

在MATLAB中允许矩阵中的非数字条目

提问于
浏览
0

我编写了一个代码,用一些数字替换矩阵中的非数字值 . 现在,为了测试它,我想允许MATLAB接受非数字条目 .

我的代码以提示符开头: matrix_input = input('Please enter the matrix: x=');

如果我输入类似[1,2,3; 4,5,?]的内容,MATLAB会给出错误:不 balancer 或意外的括号或括号 . 由于所有括号似乎都是 balancer 的,我认为这是由于非数字输入 . 是否可以使MATLAB允许非数字输入?

1 回答

  • 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
    

    EDIT

    出于好奇,您使用什么代码来替换非数字值?对于一个单元阵列,我想到了以下内容:

    idx = cellfun(@isnumeric, cell_array);
    cell_array(~idx) = {NaN};
    matrix = cell2mat(cell_array);
    

    如评论中所述,您还可以使用struct数组:

    struct_array = struct('v', {1, 2, 3; '4', '?', 6});
    

    这将创建一个结构数组,其中字段 v 包含该值 . 但是,我想不出一个简洁的方法来进行更换 .

相关问题