【问题标题】:Matlab error using matrix logical indexing A(I) = B使用矩阵逻辑索引 A(I) = B 的 Matlab 错误
【发布时间】:2016-05-30 20:27:01
【问题描述】:

试图做一个矩阵逻辑索引,但Matlab似乎很疯狂,我在这里缺少什么?

看:

>> A
A =
   NaN   NaN   NaN   NaN
>> B
B =
     1     2     3     4
>> I
I =
     1     1     0     0
>> A(I) = B
In an assignment  A(I) = B, the number of elements in B and I must
be the same. 
>> numel(B)
ans =
     4
>> numel(A)
ans =
     4

【问题讨论】:

  • B 有 4 个元素,I 只有 2 个 TRUE 元素,您不能将 4 个元素强制转换为 2 个。也许 A(I) = B(I)?这也称为逻辑索引而不是“标志操作”
  • 另外两个应该保持不变。我猜。
  • 你试过我刚刚发布的内容了吗?它正是这样做的。
  • A(I) = B(I) 有效。好的,现在说得通了。

标签: matlab matrix


【解决方案1】:

请放心,MATLAB 并不疯狂。 B 有 4 个元素,如您所示,A(I) 只有 2 个,因为 I 只有 2 个 true 值。

numel(B)
%   4

numel(A(I))
%   2

您试图将 4 个元素分配给 A 中的两个元素,这正是您的错误状态。

在赋值A(I) = B中,B和I中的元素个数必须相同

如果I,您只能使用您的特定值将B 中的两个值分配给A。我猜你只想像这样分配B 的相应元素。

A(I) = B(I);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-10
    • 2023-03-04
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多