MATLAB 在单元格分配中使用冒号运算符
MATLAB Using colon operator with cell assignment
我使用以下代码行将元胞数组的第一列设置为 false,以便它可以用于 uitable 中的复选框:
result{:,1} = false;
它 运行 正如预期的那样多次,但似乎 运行domly 抛出了这个错误:
The right hand side of this assignment has too few values
to satisfy the left hand side.
我最终将行更改为:
result(:,1) = {false};
它似乎和以前一样工作。
第一种方法行不通有什么原因吗?或者它会工作一段时间然后停止的任何原因?
你原来的线路
result{:,1} = false;
如果 result
有一行, 将起作用,但如果它有几行,则不起作用。所以我的猜测是 它最初工作是因为 result
有一行,但停止工作是因为 result
获得了新行 .
为什么会这样?
若result
为单行,语句result{:,1} = false;
与result{1,1} = false;
相同,即“设置左上单元格的内容result
到 false
”,很好。但是,如果 result
有 n
行,则语句 result{:,1} = false;
的左侧是 n
单元格内容的 comma-separated list。 您不能将单个 值 分配给多个单元格的 内容。 Matlab 不会自动复制该值并将其作为所有这些单元格的内容。
一个解决方案是告诉 Matlab 使用 deal
进行复制(这实际上 "deals" 所有左侧的值 "receivers"):
result{:,1} = deal(false);
当然,如果只有一行,这也有效。
另一种可能性是像您一样使用
result(:,1) = {false};
这意味着“使 result
第一列中的所有单元格等于包含 false
的单元格”。请注意与前一种情况的区别:现在我们将一个单元格分配给多个单元格。 Matlab 对此很满意,并自动复制右侧的单元格。同样,这也适用于特定情况下的单行。
我使用以下代码行将元胞数组的第一列设置为 false,以便它可以用于 uitable 中的复选框:
result{:,1} = false;
它 运行 正如预期的那样多次,但似乎 运行domly 抛出了这个错误:
The right hand side of this assignment has too few values
to satisfy the left hand side.
我最终将行更改为:
result(:,1) = {false};
它似乎和以前一样工作。
第一种方法行不通有什么原因吗?或者它会工作一段时间然后停止的任何原因?
你原来的线路
result{:,1} = false;
如果 result
有一行, 将起作用,但如果它有几行,则不起作用。所以我的猜测是 它最初工作是因为 result
有一行,但停止工作是因为 result
获得了新行 .
为什么会这样?
若result
为单行,语句result{:,1} = false;
与result{1,1} = false;
相同,即“设置左上单元格的内容result
到 false
”,很好。但是,如果 result
有 n
行,则语句 result{:,1} = false;
的左侧是 n
单元格内容的 comma-separated list。 您不能将单个 值 分配给多个单元格的 内容。 Matlab 不会自动复制该值并将其作为所有这些单元格的内容。
一个解决方案是告诉 Matlab 使用 deal
进行复制(这实际上 "deals" 所有左侧的值 "receivers"):
result{:,1} = deal(false);
当然,如果只有一行,这也有效。
另一种可能性是像您一样使用
result(:,1) = {false};
这意味着“使 result
第一列中的所有单元格等于包含 false
的单元格”。请注意与前一种情况的区别:现在我们将一个单元格分配给多个单元格。 Matlab 对此很满意,并自动复制右侧的单元格。同样,这也适用于特定情况下的单行。