无法执行赋值,因为左侧和右侧的元素数目不同

"无法执行赋值,因为左侧和右侧的元素数目不同"问题的解决

报错信息

matlab命令行提示如下错误信息,并指出产生错误的代码和行号

无法执行赋值,因为左侧和右侧的元素数目不同

分析

出现这个报错说明矩阵左右两边元素个数不相等,我们要做的是理解两边元素个数为什么不相等,再根据情况修改。我总结了如下步骤:

  1. 定位到报错行
  2. 查看一下等号左右两边元素个数,这里通过观察可能看不出问题,可以用size函数分别查看两边元素的个数
  3. 充分理解等号左右两边变量的类型,到底是数值还是字符数组或字符串数组,有没有元胞数组等……,
  4. 搞清楚左右两边是一个完整的矩阵还是单个元素,我见过有人将矩阵和单个元素用等号连接
  5. 对容易让人混淆的情形,要着重考虑,比如代码 A = char(ones(1,10)); A(1) = '123' ,左边是字符数组A的第一个元素,该位置只能保存一个字符,而右边是一个字符数组,这个字符数组有3个元素,每个元素代表一个字符,这个操作将包含3个字符的字符数组赋值给只能包含一个字符的位置,这样一来出现“左侧和右侧的元素数目不同”的报错也属正常。修改方案A = string(ones(1,10)); A(1) = "123"这段代码将A修改为字符串数组,‘123’改为“123”,这样就将字符串保存到了字符串数组中

补充

字符数组是每个元素保存一个字符的数组
字符串数组是每个元素保存一个字符串的数组

你可能感兴趣的:(matlab,String)