MATLAB: Insert zeros in a vector randomzeros Let's assume my vector is A = [1 2 3 7 9 10 45 93 122 150]'; I want to put zeros in between these numbers. A = [1 2 3 0 0 0 7 0 9 10 0 0 …..]'; Best Answer One of ways:A = [1 2 3 7 9 10 45 93 122 150]'ii = randi(3,numel(A),1);t = cumsum(ii) < numel(A);ii = ii(t);z = arrayfun(@(x)zeros(x,1),ii(1:end-1),'un',0);C = mat2cell(A(1:sum(ii)),ii,1);out = [C';[z',{[]}]];out = cat(1,out{:}); Related SolutionsMATLAB: Vector output from a for loop TMP =[12, 3, 36];PGRED=zeros(size(TMP));for ii=1:length(TMP) if TMP(ii) < 9 PGRED(ii)=0; elseif 9<=TMP(ii) && TMP(ii)<10 PGRED(ii)= TMP(ii)-9; elseif 10<=TMP(ii) && TMP(ii)<28 PGRED(ii)= 1; elseif 28<=TMP(ii) && TMP(ii)<40 PGRED(ii)= -0.083*TMP(ii) + 3.33; else %40 >= TMP(ii) % this condition is not required. Just give a default condition. PGRED(ii)=0; end end MATLAB: How to convert Cell Array index into Matrix with ones The simple way:A = {2, [2, 3], 3, [3, 4]};B = zeros(numel(A), max(cat(2, A{:}))); % Pre-allocatefor iRow = 1:numel(A) B(iRow, A{iRow}) = 1;endA vectorized way:% UNTESTEDnA = cellfun('length', A);col = cat(2, A{:});row = repelem(1:numel(A), nA);sizeB = [numel(A), max(cat(2, A{:}))];index = sub2ind(sizeB, row, col);B(index) = 1; Related QuestionGiven two vectors A and B, what is the best way to generate the vector C such that sum(C==A(i)) = B(i)How to randomly select variable from the range of numbersRandom split of a vector of unequal lengthsIs there an easy way to get all the ordering index of each column of matrix as a matrix formRandom numbers
Best Answer