How to remove a value from matrix with same values in different positon?

1 visualización (últimos 30 días)
Hi everyone. I have 3x3 matrix of
T = [7,8,8 ; 6,4,10 ; 12,8,7]
I want to remove seven at first row and first column and not the other 7 in the last row and last column. How to remove it and same will apply for 8 also. I used indexing as T(T==7) = NaN; but it removes both values as the condition implies. Kindly please help with this. Thanks in advance.
  6 comentarios
Pandiyaraj Gnanasekar
Pandiyaraj Gnanasekar el 7 de Dic. de 2019
I am extreamly sorry for the incovinience I'll attach the actual problem in this comment.
Mc = [1,3,2; 2,1,3; 1,2,3]; % Machine Number
PT = [7,8,10; 6,4,12; 8,8,7]; % Processing Time
Stime = zeros(3,3); %Start time
Etime = zeros(3,3); %End Time
T = zeros(3,3); %Temporary Matrix
for i = 1:3
for j = 1:3
machineIndex = Mc(i,j);
minV = min(PT(Mc==i));
Stime(i,j) = T(i,j);
for k = 1:n
if Stime(i,j) + minV >= T(i,k)
T(i,k) = Stime(i,j) + minV;
end
end
for k = 1:m
if Stime(i,j) + minV >= T(k,machineIndex)
T(k,machineIndex) = Stime(i,j) + minV;
end
end
Etime(i,j) = Stime(i,j)+ minV;
PT(PT==minV) = NaN;
end
end
I just want to schedule the minimum job first and next minimum job according to Machine Number. The processing time of Jobs are given in PT. I think this explains. And sorry for not explaining clearly.
dpb
dpb el 7 de Dic. de 2019
Editada: dpb el 7 de Dic. de 2019
What are n, m in the two loop limit expressions intended to be? They're undefined here.
"...schedule the minimum job first and next minimum job ..."
Why isn't the order just sort(minV) then?
T=sort(minV);
After that, ETime and STime will just be
Etime=cumsum(T);
Stime=[0;Etime(1:2)];
it would seem.

Iniciar sesión para comentar.

Respuesta aceptada

Roshni Garnayak
Roshni Garnayak el 13 de Dic. de 2019
You can obtain the indices of the first occurrence of each value in a matrix using the ‘unique’ function. Refer to the following link for details on how to use ‘unique’:
After you obtain the indices you can find the indices which have duplicate values by using the ‘ismember’ function. Refer to the link below:
Refer to the code below to obtain your functionality:
T = [7,8,8 ; 6,4,10 ; 12,8,7];
[C, ia] = unique(T, 'first');
x = 1:numel(T);
[lic, lob] = ismember(x, ia);
T(x(~lic)) = NaN;

Más respuestas (0)

Categorías

Más información sobre Parallel for-Loops (parfor) en Help Center y File Exchange.

Productos


Versión

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by