如何使用索引将对象或句柄中的“nans”变成“zeros”

How to turn `nans` into `zeros` in objects or handles using indexing

变量trackWorkspace包含cellstructures。变量intensityDIVtrackworkspace里面的一个向量数组。我想将 intensityDIV 内的任何 nans 变成零。它给我一个错误说:Insufficient outputs from right hand side to satisfy comma separated list expansion on left hand side. Missing [] are the most likely cause.

data = [handles.trackWorkspace.intensityDIV];
if any(isnan(data))
    handles.trackWorkspace(isnan(data)).intensityDIV = 0;
end

handles.trackWorkspace(isnan(data)).intensityDIV 创建一个 comma separated list 并为其赋值,您需要在右侧拥有与逗号分隔列表中一样多的元素。您在右侧只有一个值 (0),这导致了您的错误。

实现此目的的一种方法是使用 deal 为每个元素提供 0

[handles.trackWorkspace(isnan(data)).intensityDiv] = deal(0);

这指定 each intensityDiv 字段作为输出,因为我们只向 deal 提供一个输入,它向 [=25] 提供相同的值=]全部个输出。