Azzera filtri
Azzera filtri

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

1 visualizzazione (ultimi 30 giorni)
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)

Risposta accettata

julian navas
julian navas il 19 Lug 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

Più risposte (0)

Categorie

Scopri di più su Discrete Math in Help Center e File Exchange

Tag

Non è stata ancora inserito alcun tag.

Community Treasure Hunt

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

Start Hunting!

Translated by