Borrar filtros
Borrar filtros

how to add element to a cell array struct without loop

1 visualización (últimos 30 días)
Xiaodi
Xiaodi el 20 de Ag. de 2017
Comentada: Xiaodi el 20 de Ag. de 2017
Hi, I have a cell array, each of them is a structure, I want to add values in all arrays with field name myfield, how I do it without a loop?
for i = 1:10
C{i}.myfield = 1;
end
I can not use
C{1:10}.myfield = 1;
because it has the error:Expected one output from a curly brace or dot indexing expression, but there were 10 results. Maybe is there another simple method?
Thanks forward

Respuesta aceptada

Stephen23
Stephen23 el 20 de Ag. de 2017
Editada: Stephen23 el 20 de Ag. de 2017
This would be trivially easy if you had stored your data in a non-scalar structure (instead of inefficiently in lots of separate structures in a cell array):
>> [S(1:10).data] = deal(1)
S =
1x10 struct array with fields:
data
>> S(1).data
ans =
1
>> S(6).data
ans =
1
  3 comentarios
Stephen23
Stephen23 el 20 de Ag. de 2017
Editada: Stephen23 el 20 de Ag. de 2017
Unless there is a good reason why you need to keep the structures separate (e.g. different sizes or fields) I would simply convert to a non-scalar structure first, which would make all of your processing and code much simpler and more efficient. All you need is:
S = cell2mat(C)
You do not need to make your code ugly and inefficient because of someone else's bad data design.
PS: there is no way to access the structures in a cell array like that without a loop.
Xiaodi
Xiaodi el 20 de Ag. de 2017
Thanks a lot!!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Structures en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by