Filter löschen
Filter löschen

how to compare the elements of a matrix and fill another matrix with the elements of a vector

1 Ansicht (letzte 30 Tage)
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)

Akzeptierte Antwort

julian navas
julian navas am 19 Jul. 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

Weitere Antworten (0)

Kategorien

Mehr zu Discrete Math finden Sie in Help Center und File Exchange

Tags

Noch keine Tags eingegeben.

Community Treasure Hunt

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

Start Hunting!

Translated by