Initializing 1/2 of a row with one value and the other half with another
40 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Robert Demyanovich
le 8 Juin 2021
Modifié(e) : David Hill
le 8 Juin 2021
I don't understand why the following works. It initializes row 1 of the array c with values of 1 in roughly the first half of the columns and then places a zero in the exact middle column (half way) while also placing zeros in the right half of the columns. So, if the number of columns is 11, columns 1 through 5 are initialized with 1 and columns 6 through 11 with zero.
1) c(1,:)=[ones(1,(N-1)/2),zeros(1,(N+1)/2)]
I would have thought that the way to do this is to specify the zeros from columns (N+1)/2 to N. More like:
2) c(1,:)=[ones(1,(N-1)/2),zeros((N+1)/2,N)]
So if N = 11, the script, 2) would result in:
c(1,:)=[ones(1,(10)/2),zeros((11+1)/2,11)] or c(1,:)=[ones(1,5),zeros(6,11)]
So, Matlab just knows that in 1) above to continue counting from the column where it stopped putting ones to start putting in values of zeros for the remaining columns. So, rather than an absolute reference like I've shown in 2), it uses a relative reference to decide which columns to initialize?
0 commentaires
Réponse acceptée
David Hill
le 8 Juin 2021
You are concatenating two arrays. Look at the ones() and zeros() functions.
a=ones(1,5);
b=zeros(1,6);
c=[a,b];
2 commentaires
David Hill
le 8 Juin 2021
Modifié(e) : David Hill
le 8 Juin 2021
because you are specifing:
c(1,:)=[a,b];%you are only doing it to the first row of c
% you could also do it the the 5th row
c(5,:)=[a,b];
%or you could do it to all odd rows of c
c(1:2:end,:)=[a,b];
Plus de réponses (1)
Fangjun Jiang
le 8 Juin 2021
Modifié(e) : Fangjun Jiang
le 8 Juin 2021
You mis-understood it. The code involves built-in functions ones() and zeros(). The input arguments are size of the matrix, not the index of elements in a matrix.
The "[ ]" operator combines the two matrix (or vectors, five ones and six zeros) together.
Or you could do this
N=11
c(1,1:(N-1)/2)=1
c(1,(N+1)/2:N)=0
0 commentaires
Voir également
Catégories
En savoir plus sur Matrices and Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!