Adding Data to an Existing Nx1 Double

4 visualizaciones (últimos 30 días)
Conor J Crickmore
Conor J Crickmore el 5 de Mayo de 2017
Comentada: Conor J Crickmore el 5 de Mayo de 2017
Hello everyone. I have a 257x1 double that I need to add zero values to at set locations without removing the pre-existing data, in essence expanding the double to a 264x1.
I've been searching through existing answers but am still not quite getting it due to most cases involving NxM matrices as opposed to having a single column.
Thanks for your help Conor
EDIT -------------- After some additional searching I found a method that solves my problem but I am still curious if it is the most efficient, here is my finished code:
U = ones (264,1);
U (:) = NaN;
U ([9;37;38;39;49;50;51]) = 0;
URLocations = find (isnan (U));
U (URLocations) = UR;

Respuesta aceptada

Stephen23
Stephen23 el 5 de Mayo de 2017
Editada: Stephen23 el 5 de Mayo de 2017
Simplified a little:
U = nan(264,1);
U([9;37;38;39;49;50;51]) = 0;
U(isnan(U)) = UR;
  • find is not required and is just slows the code down. Logical indexing is faster.
  • there is no point creating a matrix of ones when you want a matrix of NaNs.
  • allocating the index variable just clutters the workspace and slows the code.
An alternative ( I have no idea if this will be faster, you should time them with timeit ):
U = zeros(264,1);
U(setdiff(1:264,[9;37;38;39;49;50;51]) = UR;
  1 comentario
Conor J Crickmore
Conor J Crickmore el 5 de Mayo de 2017
Thank you very much, explains why you did what you did too :-)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical 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