how to compare the elements of a matrix and fill another matrix with the elements of a vector
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Diego Játiva
el 19 de Jul. de 2020
Comentada: Diego Játiva
el 20 de Jul. de 2020
what I am trying to do is fill a matrix of zeros with the elements of a vector, but first I have to compare with a matrix of 1 and 0 to know what value should go
these vectors represent the availability and unavailability of a group of components of an electrical system, if the element of the matrix is equal to 1 it takes the value of availability, if it is zero it must take the value of unavailability
the code that I propose only fills the first column of the matrix of zeros with the corresponding elements of a and b, but I cannot get the other columns to be filled with the corresponding elements
n=5;
a=[0.9 0.8 0.7 0.6 0.5];
b=[ 0.1 0.2 0.3 0.4 0.5];
t=ff2n(n);
t1=zeros(size(t));
for i = 1:length(t)
if t(i)==1
t1(i) =a(1,1);
else
t1(i) = b(1,1);
end
end
disp(t1)
0 comentarios
Respuesta aceptada
julian navas
el 19 de Jul. de 2020
Since your t matrix is full of 0 and 1 you can take advantage of that and just do this
a = [0.9 0.8 0.7 0.6 0.5];
b = [0.1 0.2 0.3 0.4 0.5];
t = ff2n(n);
t1 = t.*a
t1 =
0 0 0 0 0
0 0 0 0 0.5000
0 0 0 0.6000 0
0 0 0 0.6000 0.5000
0 0 0.7000 0 0
0 0 0.7000 0 0.5000
0 0 0.7000 0.6000 0
0 0 0.7000 0.6000 0.5000
0 0.8000 0 0 0
0 0.8000 0 0 0.5000
0 0.8000 0 0.6000 0
0 0.8000 0 0.6000 0.5000
0 0.8000 0.7000 0 0
0 0.8000 0.7000 0 0.5000
0 0.8000 0.7000 0.6000 0
0 0.8000 0.7000 0.6000 0.5000
0.9000 0 0 0 0
0.9000 0 0 0 0.5000
0.9000 0 0 0.6000 0
0.9000 0 0 0.6000 0.5000
0.9000 0 0.7000 0 0
0.9000 0 0.7000 0 0.5000
0.9000 0 0.7000 0.6000 0
0.9000 0 0.7000 0.6000 0.5000
0.9000 0.8000 0 0 0
0.9000 0.8000 0 0 0.5000
0.9000 0.8000 0 0.6000 0
0.9000 0.8000 0 0.6000 0.5000
0.9000 0.8000 0.7000 0 0
0.9000 0.8000 0.7000 0 0.5000
0.9000 0.8000 0.7000 0.6000 0
0.9000 0.8000 0.7000 0.6000 0.5000
t2 = not(t.*a).*b
t2 =
0.1000 0.2000 0.3000 0.4000 0.5000
0.1000 0.2000 0.3000 0.4000 0
0.1000 0.2000 0.3000 0 0.5000
0.1000 0.2000 0.3000 0 0
0.1000 0.2000 0 0.4000 0.5000
0.1000 0.2000 0 0.4000 0
0.1000 0.2000 0 0 0.5000
0.1000 0.2000 0 0 0
0.1000 0 0.3000 0.4000 0.5000
0.1000 0 0.3000 0.4000 0
0.1000 0 0.3000 0 0.5000
0.1000 0 0.3000 0 0
0.1000 0 0 0.4000 0.5000
0.1000 0 0 0.4000 0
0.1000 0 0 0 0.5000
0.1000 0 0 0 0
0 0.2000 0.3000 0.4000 0.5000
0 0.2000 0.3000 0.4000 0
0 0.2000 0.3000 0 0.5000
0 0.2000 0.3000 0 0
0 0.2000 0 0.4000 0.5000
0 0.2000 0 0.4000 0
0 0.2000 0 0 0.5000
0 0.2000 0 0 0
0 0 0.3000 0.4000 0.5000
0 0 0.3000 0.4000 0
0 0 0.3000 0 0.5000
0 0 0.3000 0 0
0 0 0 0.4000 0.5000
0 0 0 0.4000 0
0 0 0 0 0.5000
0 0 0 0 0
t1+t2
ans =
0.1000 0.2000 0.3000 0.4000 0.5000
0.1000 0.2000 0.3000 0.4000 0.5000
0.1000 0.2000 0.3000 0.6000 0.5000
0.1000 0.2000 0.3000 0.6000 0.5000
0.1000 0.2000 0.7000 0.4000 0.5000
0.1000 0.2000 0.7000 0.4000 0.5000
0.1000 0.2000 0.7000 0.6000 0.5000
0.1000 0.2000 0.7000 0.6000 0.5000
0.1000 0.8000 0.3000 0.4000 0.5000
0.1000 0.8000 0.3000 0.4000 0.5000
0.1000 0.8000 0.3000 0.6000 0.5000
0.1000 0.8000 0.3000 0.6000 0.5000
0.1000 0.8000 0.7000 0.4000 0.5000
0.1000 0.8000 0.7000 0.4000 0.5000
0.1000 0.8000 0.7000 0.6000 0.5000
0.1000 0.8000 0.7000 0.6000 0.5000
0.9000 0.2000 0.3000 0.4000 0.5000
0.9000 0.2000 0.3000 0.4000 0.5000
0.9000 0.2000 0.3000 0.6000 0.5000
0.9000 0.2000 0.3000 0.6000 0.5000
0.9000 0.2000 0.7000 0.4000 0.5000
0.9000 0.2000 0.7000 0.4000 0.5000
0.9000 0.2000 0.7000 0.6000 0.5000
0.9000 0.2000 0.7000 0.6000 0.5000
0.9000 0.8000 0.3000 0.4000 0.5000
0.9000 0.8000 0.3000 0.4000 0.5000
0.9000 0.8000 0.3000 0.6000 0.5000
0.9000 0.8000 0.3000 0.6000 0.5000
0.9000 0.8000 0.7000 0.4000 0.5000
0.9000 0.8000 0.7000 0.4000 0.5000
0.9000 0.8000 0.7000 0.6000 0.5000
0.9000 0.8000 0.7000 0.6000 0.5000
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!