Help needed with matrix in for-loop and output of matrix

조회 수: 1 (최근 30일)
Karsten
Karsten 2014년 12월 23일
댓글: Karsten 2014년 12월 24일
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].
  1. If an x-value is unique, then it's y-value is the one to be taking.
  2. 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.
%

채택된 답변

Sara
Sara 2014년 12월 23일
With x,y column vectors:
A = [x,y];
B = sortrows(A,1);
unique_x = unique(B(:,1));
new_matrix = zeros(numel(unique_x),2);
new_matrix(:,1) = unique_x;
for i = 1:numel(unique_x)
k = find(B(:,1) == unique_x(i));
new_matrix(i,2) = min(B(k,2));
end
  댓글 수: 1
Karsten
Karsten 2014년 12월 24일
Well that doe seem to work! Thanks alot Sara, much appreciated!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Language Fundamentals에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by