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

1 view (last 30 days)
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.
Pandiyaraj Gnanasekar
Pandiyaraj Gnanasekar on 7 Dec 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;
for k = 1:m
if Stime(i,j) + minV >= T(k,machineIndex)
T(k,machineIndex) = Stime(i,j) + minV;
Etime(i,j) = Stime(i,j)+ minV;
PT(PT==minV) = NaN;
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 on 7 Dec 2019
Edited: dpb on 7 Dec 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?
After that, ETime and STime will just be
it would seem.

Sign in to comment.

Accepted Answer

Roshni Garnayak
Roshni Garnayak on 13 Dec 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;

More Answers (0)


Find more on Parallel for-Loops (parfor) in Help Center and File Exchange




Community Treasure Hunt

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

Start Hunting!