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;

 채택된 답변

Stephen23
Stephen23 2017년 5월 5일
편집: Stephen23 2017년 5월 5일

0 개 추천

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

Conor J Crickmore
Conor J Crickmore 2017년 5월 5일
Thank you very much, explains why you did what you did too :-)

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by