Hi, i have a question regarding some tasks to change the content of a matrix. The goal of this operation is to 'clear' a matrix consisting out of 2 columns and a random amount of rows. The operation has to be done using a function-file. The input has to be x = [:,1] and y = [:,2]. After that the first step is to put them together in a matrix A = [x,y] and the rows need to be sorted from lowest to highest value from the first column, B = sortrows(A,1). The problem however is that in the first column the x-values are supposed to be unique with it's matching y-values (2nd column).
So let's say you got a x = [1;3;4;3;2;2;4] and y = [5;1;3;2;9;6;1] which will then transfer into the matrix B = [1,5;2,9;2,6;3,1;3,2;4,3;4,1]. Now as you can see there are several x-values that aren't unique in the first column. The result of this operation should be the next matrix C = [1,5;2,6;3,1;4,1].
- If an x-value is unique, then it's y-value is the one to be taking.
- If an x-value is not unique, then the y-value should be the lowest value matching with these x-values.
How can i write a code into a for-loop(?) with these 2 conditions so it can be used for any matrix with n x 2 dimension? This is what i had so far, yet i have no idea if this is anywhere near the solution..
function [ new_matrix ] = matrix( x,y ) A = [x,y]; B = sortrows(A,1); n = size(B,1); for i = 1:1:n if B(i,1) == B(i+1,1) && B(i,2) <= B(i+1,2) B(i+1,:) = []; elseif B(i,1) == B(i+1,1) && B(i,2) >= B(i+1,2) B(i,:) = []; end end
This is an example of how it's supposed to work, but for any matrix with n x 2 dimensions.
%
Best Answer