Obtaining all zeros from rand

조회 수: 1 (최근 30일)
Damiano Capocci
Damiano Capocci 2017년 9월 30일
편집: Stephen23 2017년 10월 1일
Hi, i'm working with rand but when i do x(1,9)=rand the vector x has the first eight components are always equal to zero, in particular if i do x(1,3)=rand the first and the second are zero. I've also noticed that if the code is :
for n = drange(1:45)
x(1,n)=rand
end
it creates a correct vector of random numbers on the contrary (like the previous one) :
clear all;
x(1,45)=rand
it gives only the 45th component different from zero.
How can i fix it ?
  댓글 수: 2
Damiano Capocci
Damiano Capocci 2017년 9월 30일
편집: Damiano Capocci 2017년 9월 30일
yes thnx, it works but i would like to know why it happens that situation.
Stephen23
Stephen23 2017년 9월 30일
편집: Stephen23 2017년 10월 1일
@Damiano Capocci: this has really nothing to do with rand, and is entirely due to your indexing during the allocation:
x(1,45) = ...
If x does not exist when that lines is run, then MATLAB creates x. Your indexing specifies just one element of that array (1st row, 45th column), and so MATLAB puts whatever value happens to be on the right-hand-side of the allocation into that location. Your indexing does not refer to the other elements of the first row (from 1 to 44) and so MATLAB simply fills them in with a default value (zero).
Note that using a loop to fill an array like this is not efficient or recommended:
for n = drange(1:45)
x(1,n)=rand
end
Much simpler is to call rand and specify the size array that you need:
x = rand(1,45)

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

채택된 답변

Andrei Bobrov
Andrei Bobrov 2017년 9월 30일
편집: Andrei Bobrov 2017년 9월 30일

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by