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