Assign Value to Multiply Indexed Range

2 次查看(过去 30 天)
Suppose control is an m-element one-dimensional structure array such that each element contains another n-element one-dimensional structure array W, with a scalar (specifically, LOGICAL) field status. As a simple example consider the synthetic construction
control = repmat(struct('W', struct('status', { false, true, true, false, true })), [1, 5])
In other words, the expression
control(i).W(j).status
is valid for all i=1:5 and all j=1:4.
My question is if there is an easy way of assigning W(3).status for all i=3:5 (i.e., a specific j value for a subset of the i range) without using the obvious loop
for i = 3:5, control(i).W(3).status = false; end
I didn't see a good way of persuading deal to do this.
Note: I'm perfectly willing to change my data structure if that's what it takes to simplify the task. Maybe turning W into a matrix is the right choice here (e.g., [control.W(3:5,2).status] = deal(false)). In my general case, though, the number of W elements might be different for each value of i.

采纳的回答

Bruno Luong
Bruno Luong 2019-7-16
编辑:Bruno Luong 2019-7-16
You might store in a table, which by design put the two variables/row dimensions to the same level; so you can index them either way.
The struct as you built is hierachical. The advantage is you can put scatted length data in the nested j-level. But it prevents user to assign the same nest index for subset of outer index.
c = repmat({[false;true;true;false;true]},1,5)
ControlStatus = table(c{:})
Assign
i = 3:5;
j = 3;
ControlStatus(j,i) = repmat({false},size(i))
  1 个评论
Bård Skaflestad
Bård Skaflestad 2019-7-16
> You might store in a table, which by design put the two variables/row dimensions to the same level; so you can index them either way.
Hm, that's an interesting thought. I haven't really used tables much, but this might be a good opportunity to learn and experiment with them.
> The struct as you built is hierachical. The advantage is you can put scatted length data in the nested j-level.
Truth be told, that was the original reason for using the hierarchical structure.
> But it prevents user to assign the same nest index for subset of outer index.
Absolutely, and that's the problem I'm running into now. I think it's a good time to rethink the greater task from the ground up. Thanks for the hint!

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

产品


版本

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by