separate strings that are inside a cell
Afficher commentaires plus anciens
Hey so I got a cell that is 12000x1 and inside this cell I got some strings that are 2x1 or 3x1. I want to delete this string but get the messages from there and put them inside the cell. Is there any function that let me do this?
4 commentaires
Jan
le 17 Sep 2021
Please post a small example, which clarifies, what you want to achieve. Deleting and keeping the messages sounds like a contradiction.
flashpode
le 17 Sep 2021
Jan
le 17 Sep 2021
Yes, I see it. What do you want todo with these strings? Remove them or replace them? In the latter case: by what?
flashpode
le 17 Sep 2021
Réponse acceptée
Plus de réponses (1)
If your goal is to simply be able to read those lines, use cellfun to identify elements of cell array "C" that have more than one row of strings and then use cellfun again to transpose those rows.
Create demo data - you can see that there are 3 elements of C that are 2x1 or 3x1 string arrays
C = {"sdfsd"; "dare"; ["abs";"ses"]; "erwe"; "serwe"; ...
["444";"wer"]; "adrwed"; ["ee";"vse";"xxx"]; "sered"}
Transpose mutli-rows
[nRows, ~] = cellfun(@size,C);
isMultiRow = nRows>1;
C(isMultiRow) = cellfun(@(a) {a'}, C(isMultiRow))
If you'd like to join those strings into 1, replace the line above with this line.
C(isMultiRow) = cellfun(@(a) {strjoin(a,' ')}, C(isMultiRow))
10 commentaires
flashpode
le 18 Sep 2021
flashpode
le 18 Sep 2021
flashpode
le 18 Sep 2021
It would be easy to help you, if you provide an example with an output for a specific input. I ask for this repeatedly, but you show us screen shots and rough explanations only. "get the messages from inside like the other lines" is not clear enough and an image showing "2x1 string" does not help also.
"join the strings into one and then split into two lines" - why do you want to join them before splitting? This sounds, like you have a specific purpose for thi, but I cannot guess this detail.
"found the function strsplit but it gives me the error using it" - post your code an a complete copy of the error message. Remember, that the readers in the forum have no idea of what you are doing, but this is required to assist you.
Adam did you the favour to create an example for the input:
C = {"sdfsd"; "dare"; ["abs";"ses"]; "erwe"; "serwe"; ...
["444";"wer"]; "adrwed"; ["ee";"vse";"xxx"]; "sered"}
Now it is your turn to show us, what you want to get. Post it as code, which produces the wanted output, not as description like "in a different line".
flashpode
le 18 Sep 2021
Adam Danz
le 18 Sep 2021
The mini lesson hopefully learned here is to provide a clear question with examples to illustrate the problem clearly.
flashpode
le 18 Sep 2021
Jan
le 18 Sep 2021
It's alright. Asking questions is not trivial. It is the nature of problems, that the asking person is not aware of which information is required for a solution. I think, you have learned how to solve this problem and something about keeping the fokus in the question.
Adam Danz
le 18 Sep 2021
@vicente Noguer, no problem, I agree with Jan. Providing sample of inputs (as you provided) and samples of expected outputs goes a long way.
flashpode
le 18 Sep 2021
Catégories
En savoir plus sur Characters and Strings dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
