how to do this operation to calculate a new matrix ?

2 vues (au cours des 30 derniers jours)
Firas Al-Kharabsheh
Firas Al-Kharabsheh le 30 Avr 2016
IF i have this matrix
A=[ 3 2 0
2 1 1
5 4 0
3 2 0
4 3 1
10 0 0 ]
and i found this matrix
a = [ 5
4
9
5
8
10 ]
and this matrix
b = [2
3
2
2
3
1 ]
i want to find this matrix F_Complete where for k=1:6 if (a(k) + b(k) - 1) == 10 then go back to A(k) and make group of ones depend on the number in the row(k) ( between each group there is zero ) like this
the third row in A = [5 4 0 ] make the condition true then
F_Complete(3,:) = [1 1 1 1 1 0 1 1 1 1]
the five row in A = [ 4 3 1 ] make the condition true then
F_Complete(5,:) = [1 1 1 1 0 1 1 1 0 1]
the last row in A = [ 10 0 0] make the condition true then
F_Complete(6,:) = [1 1 1 1 1 1 1 1 1 1]
then the final answer is
F_Complete = [ 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0
1 1 1 1 0 1 1 1 0 1
1 1 1 1 1 1 1 1 1 1 ]

Réponse acceptée

CS Researcher
CS Researcher le 30 Avr 2016
Modifié(e) : CS Researcher le 30 Avr 2016
Try this:
N = 10;
m = size(A,1);
% Pre-allocate the F_Complete matrix
F_Complete = zeros(m, N)
for i = 1:m
if a(i)+b(i)-1 == 10
tempVector = [ones(1,A(i,1)) 0 ones(1,A(i,2)) 0 ones(1,A(i,3))];
F_Complete(i,:) = tempVector(1:N);
end
end
Hope this helps!
  2 commentaires
Firas Al-Kharabsheh
Firas Al-Kharabsheh le 30 Avr 2016
how to apply this for column where
B=[ 0 0 1 0 1 0 1 4 1 0
10 10 6 5 1 1 1 5 6 10 ]
a1=[ 10 10 7 5 2 1 2 9 7 10 ]
b1 = [1 1 2 1 2 1 2 2 2 1 ]
how to find F_complete_column where the final will be
F_complete_column = [ 1 1 0 0 0 0 0 1 0 1
1 1 0 0 0 0 0 1 0 1
1 1 0 0 0 0 0 1 0 1
1 1 0 0 0 0 0 1 0 1
1 1 0 0 0 0 0 0 0 1
1 1 0 0 0 0 0 1 0 1
1 1 0 0 0 0 0 1 0 1
1 1 0 0 0 0 0 1 0 1
1 1 0 0 0 0 0 1 0 1
1 1 0 0 0 0 0 1 0 1 ]
Firas Al-Kharabsheh
Firas Al-Kharabsheh le 30 Avr 2016
@CS Researcher

Connectez-vous pour commenter.

Plus de réponses (1)

Matt J
Matt J le 30 Avr 2016
Modifié(e) : Matt J le 30 Avr 2016
N=10;
idx=(a+b==N+1);
F_Complete = zeros(m,N);
fun=@(x) x(1:N);
Fc=arrayfun( @(n)[ones(1,n) 0], A(idx,:),'uni',0);
Fc=arrayfun(@(i) fun( [Fc{i,:}]),(1:size(Fc,1))','uni',0);
F_Complete(idx,:)=cell2mat(Fc)
  2 commentaires
Firas Al-Kharabsheh
Firas Al-Kharabsheh le 30 Avr 2016
give error "Undefined operator '+' for input arguments of type 'cell'"
Matt J
Matt J le 30 Avr 2016
Not for me...

Connectez-vous pour commenter.

Catégories

En savoir plus sur Logical 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