Completing elements of a matrix

1 vue (au cours des 30 derniers jours)
Karanvir singh Sohal
Karanvir singh Sohal le 1 Mar 2021
Commenté : Jan le 5 Mar 2021
I have a matrix a
from a I have generated a new matrix b which have 2 new elements for 1 element of a
a = [2;3]
[m,n]=size(a)
for i=1:m
b=[1.5*(a(i)) 2*(a(i))]
end
I want to generate a new matrix 'c' such that it includes all the sets
expected results as
c = [2 3;2 4;3 4.5;3 6]
  2 commentaires
KSSV
KSSV le 1 Mar 2021
What is C? How you got it?
Karanvir singh Sohal
Karanvir singh Sohal le 1 Mar 2021
Modifié(e) : Karanvir singh Sohal le 1 Mar 2021
I want to generate c matrix. For a(1,1) i have 2 values in b i.e. b=[1.5*2 2*2] Which gives b=[3 4] And similarly for a(2,1) I'll have b=[4.5 6]
I want new matrix c
C=[a(1) 1.5*a(1); a(1) 2*a(1); a(2) 1.5*a(2); a(2) 2*a(2)]

Connectez-vous pour commenter.

Réponse acceptée

Karanvir singh Sohal
Karanvir singh Sohal le 3 Mar 2021
Well I got what i was trying to do :)
Thanks @Jan for your time and help
L=4
X_Range=[L*1000/16 L*1000/10];
Shut= [152.4; 228.6; 304.8; 381.0; 457.2; 533.4; 609.6; 685.8; 762.0; 838.2; 914.4; 990.6; 1066.8];
X = Shut(Shut>=X_Range(1,1) & Shut<= X_Range(1,2));
[m,n]=size(X);
index = 0;
for i=1:m
Y_Range =[1.5*X(i) 2*X(i)];
Y = Shut(Shut>=Y_Range(1,1) & Shut<= Y_Range(1,2));
[mY,nY]=size(Y);
for j=1:mY
index=index+1;
XD(index)=X(i);
YD(index)=Y(j);
end
end
D= [reshape(XD,[],1) [reshape(YD,[],1)]]
  3 commentaires
Karanvir singh Sohal
Karanvir singh Sohal le 5 Mar 2021
Thanks this is a really simple version.
can you please explain me this part:
XD(end + 1:end + mY) = X(i);
YD(end + 1:end + mY) = Y;
Jan
Jan le 5 Mar 2021
These lines do the same as your loop:
for j=1:mY
index=index+1;
XD(index)=X(i);
YD(index)=Y(j);
end
but more efficiently.

Connectez-vous pour commenter.

Plus de réponses (1)

Jan
Jan le 1 Mar 2021
a = [2; 3];
b = [1.5; 2];
c = kron(a, [ones(size(a,1), 1), b])
  5 commentaires
Karanvir singh Sohal
Karanvir singh Sohal le 2 Mar 2021
I used for loop to obtain the desired results
L=4
X_Range=[L*1000/16 L*1000/10];
Shut= [152.4; 228.6; 304.8; 381.0; 457.2; 533.4; 609.6; 685.8; 762.0; 838.2; 914.4; 990.6; 1066.8];
X = Shut(Shut>=X_Range(1,1) & Shut<= X_Range(1,2));
[m,n]=size(X);
Shut(:,1);
for i=1:m
Y_Range =[1.5*X(i) 2*X(i)];
Y = Shut(Shut>=Y_Range(1,1) & Shut<= Y_Range(1,2));
[mY,nY]=size(Y);
for j=1:mY
c(j,1)=X(i);
endfor
c(:,2)=Y
endfor
This gives me the correct matrix but, I want to combine each c matrix.
when loop runs for first time it gives me c matrix of 2x2 and on second run i have 3x2
I want to combine c matrixs to get 5x2 in above example
Jan
Jan le 2 Mar 2021
I do not get an idea of what you want to achieve.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements 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!

Translated by