help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Deleting equal rows/columns in matrix


From: AlbFrigerio
Subject: Re: Deleting equal rows/columns in matrix
Date: Wed, 20 Oct 2010 08:33:32 -0700 (PDT)

YES!!!!!

Thank you so much , I hadn't found it in the manual ... how stupid I am!! By
the way, everybody says that the best way to learn programming is to program
yourself : I made my own program and, with entries between 0 and 9, it is
faster than Octave ones :)

Thanks again, 
   Alberto


bpabbott wrote:
> 
> 
> On Oct 20, 2010, at 10:25 PM, AlbFrigerio wrote:
>> 
>> Fotios Kasolis wrote:
>>> 
>>> On Oct 20, 2010, at 3:27 PM, AlbFrigerio wrote:
>>> 
>>>> Hello world, I got a problem I'm trying to solve on my own, but I  
>>>> really
>>>> don't know if I would solve it, hence I'm asking "in advance" your  
>>>> help.
>>>> 
>>>> The question is quite simple : is there a (simple) way to delete in  
>>>> a matrix
>>>> the already existing rows or columns?
>>>> 
>>>> I might use for loops asking isequal(A(i,:),A(j,:) \forall i,j , but  
>>>> I hope
>>>> there is a nicer way. I tried to use the outer product with function
>>>> @isequal , but I reach results I don't understand :(
>>>> Just as an information, I don't have a real matrix, but an integer  
>>>> one whose
>>>> lines are combination of {0,1,9} . If I got only {0,1} values I  
>>>> would have
>>>> used binary transformation, but I got three elements and, by the  
>>>> way, I'm
>>>> looking for the solution of the general problem.
>>>> 
>>>> Thank you so much, in the rest of the day I'll try to solve it, if I  
>>>> don't
>>>> reach any solution ... I hope someone of yours do !!
>>>> 
>>>>  Alberto
>>>> -- 
>>> 
>>> a) If you want to remove entire rows/cols use an assignment to the  
>>> empty matrix like
>>>> A = repmat (1:5,5,1)
>>>> A(:,1) = [] # this line removes the first column
>>> 
>>> b) Just for your information if you want to conditionally modify  
>>> elements use the function find
>>>> A = repmat (1:5,5,1)
>>>> A(find (A>3)) = 1
>>> 
>>> the same could be done (without using find) as follows
>>>> A = repmat (1:5,5,1)
>>>> A(A>3) = 1
>>> 
>>> To relate the above to your problem you can set for instance a special  
>>> value to the elements you want to remove
>>>> A = repmat (1:5,5,1)
>>>> A(A>3) = nan
>>> 
>>> and then extract a matrix without those nans by using
>>> 
>>>> B = A(! isnan(A))
>>> 
>>> Enjoy!
>>> 
>>> /Fotios
>> 
>> Thank you Ben and Fotios, you gave me correct answers, but I believe I
>> have
>> not explained well my problem. I don't want to delete "una tantum" a row
>> or
>> a column, I want that my program, given the following matrix as input
>> 
>> A = [1 0 1 0 9 0 1 ; 1 0 1 0 1 9 1 ; 0 1 9 1 0 1 9 ;  1 1 1 1 1 0 9 ; 1 0
>> 1
>> 0 1 9 1; 1 1 1 1 0 1 9] 
>> 
>> deletes the 5th row because it is the same of the 2nd one, or the 4th
>> column
>> (equal to the 2nd one). Obviosly it is "easy" to look manually for the
>> duplicates in a small matrix like the previous one, but imagine your
>> matrix
>> to have more rows and colums.
>> 
>> Thanks again,
>>  Alberto
> 
> Take a look at unique().
> 
>       help unique
> 
> To get the unique rows of a matrix, X, ...
> 
>       X = unique (X, "rows")
> 
> To get the columns ...
> 
>       X = unique (X.', "rows").'
> 
> Does that do what you want?
> 
> Ben
> 
> 
> _______________________________________________
> Help-octave mailing list
> address@hidden
> https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
> 
> 

-- 
View this message in context: 
http://octave.1599824.n4.nabble.com/Deleting-equal-rows-columns-in-matrix-tp3003845p3004123.html
Sent from the Octave - General mailing list archive at Nabble.com.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]