如何更新矩阵中行的值

How to update values from rows on a matrix

我有一个矩阵:6 行 x 18 列 我想问用户他想将哪一行更改为 0 并实现它,但是如果他输入 0 它只是退出程序

row = input('Input 0 to exit\n\n Row to eliminate:', 's');
if row ~= 0
    M(row,:) = 0;
    disp(M)
end

我想将整个输入行更改为 0,但它以某种方式在原始矩阵下方创建了 44 行(全部为 0)并且不更改前 6 行(原始矩阵)

row 是一个字符向量,不是数字。例如,如果您键入“4”,则变量包含字符 4,其数值为 52(ASCII 代码)。使用它来索引将创建一个行 #52 并用零填充它。要制作该行,还需要制作中间行,其值默认为 0。

要解决此问题,请从对 input 的调用中删除 's'。这将导致 return 值被解释为 MATLAB 表达式,而不是直接 return 将输入的文本作为字符向量。

但是,如果您的程序有可能被恶意用户或愚蠢的用户使用,则此解决方案很危险(如 所示),因为它会评估用户键入的任何内容,这意味着用户可以,例如输入擦除硬盘驱动器的命令。

更安全的解决方案是使用str2doubleinput的字符数组输出转换为可用于索引的数字。