Is there no one with the knowledge of cell operation :(

Hi. i have been asking this question again and again..with no real answer to it..it is supposed to be simple operation. but matlab is disappointing me now.
I have data in 1 cell. i want the values greater than 230 to be moved or copied into another cell. see pic.
so values at V{:,2} is 231,06 and is greater than 230, so with a code it should be moved or copied to next column.
a simple for loop or if ?
suggestions or help please?

Réponses (1)

Sean de Wolski
Sean de Wolski le 18 Mar 2014
Modifié(e) : Sean de Wolski le 18 Mar 2014
First, you asked the first question on here just a few hours ago. Contributors on this page are unpaid volunteers so it cannot be expected to get an answer immediately.
However, good job clarifying your question with the image!
C = {'hello world';245;220};
isAbove230 = @(x)isnumeric(x) && x>230; % define a function to identify elements above 230
idx = cellfun(isAbove230,C); % where are they?
C(idx) = []; % remove offending elements
Or to make a copy
C230 = C(idx);

5 commentaires

And this isn't my only volunteer work.
Image Analyst
Image Analyst le 18 Mar 2014
Modifié(e) : Image Analyst le 18 Mar 2014
For bonus points Sean, and a vote, show how it can be done with the nice new capability of a table.
awda, a nice discussion of cell arrays is in the FAQ: http://matlab.wikia.com/wiki/FAQ#What_is_a_cell_array.3F
Sean de Wolski
Sean de Wolski le 18 Mar 2014
Modifié(e) : Sean de Wolski le 18 Mar 2014
Well this would be making the assumption that the first element of the cell is the variable name. Otherwise, if the data is heterogenous elsewhere this would just be a cell array as a variable of a table.
Here is a small example with that assumption:
C = {'HelloWorld';245;220};
T = cell2table(C(2:end),'VariableNames',C(1))
%%Now a few different ways:
FirstWay = T.HelloWorld(T.HelloWorld>230)
SecondWay = T(T{:,1}>230,1)
You can use any combination of T.VarName or T{:,column} in the logical index.
You got it. By the way, tables are only in R2013b and later.
I am not convinced that the entries are numeric; I think maybe they are all strings.

Cette question est clôturée.

Question posée :

le 17 Mar 2014

Clôturé :

le 20 Août 2021

Community Treasure Hunt

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

Start Hunting!

Translated by