Hello,
I have a cell array like
' '
' '
'1231231'
' '
' '
'1231231'
' '
I want to delete this blank elements and transform this cell array from 7x1 to 2x1. How can I do it? Is there any methods to solve this problem without cellfun or etc.? Thank you.

 採用された回答

Fangjun Jiang
Fangjun Jiang 2022 年 6 月 6 日

0 投票

If the data is in a cell array, mostly likely cellfun() is needed, unless you use for-loop.
strtrim() or strip() can remove the white spaces.
b={' '
' '
'1231231'
' '
' '
'1231231'
' '};
c=strip(b);
index=cellfun(@isempty,c);
d=b(~index)
d = 2×1 cell array
{'1231231'} {'1231231'}

7 件のコメント

tinkyminky93
tinkyminky93 2022 年 6 月 6 日
編集済み: tinkyminky93 2022 年 6 月 6 日
First argument must be text, error using strip.
Jan
Jan 2022 年 6 月 6 日
@tinkyminky: Does this mean, that your cell array does not contains CHAR vectors? Then the question is misleading. Please post some code, which creates your input data.
tinkyminky93
tinkyminky93 2022 年 6 月 6 日
Yes it is. It does not contain anything. It is just created because of the for loop and there is no data inside of it.
Jan
Jan 2022 年 6 月 6 日
@tinkyminky93: I do not understand, what you want to say. What does not contain anything? Which loop? What is the meaning of the ' ' blocks in your question?
If tzhese blocks are empty matrices instead of char vectors containing spaces, simple omit the strip command:
c = c(~cellfun('isempty',c))
tinkyminky93
tinkyminky93 2022 年 6 月 7 日
Actually i am scanning all the text file with for loop and if it contains the data that I want, I am taking these values and deleting rest. Thats where for loop comes from.By the way my array is char array for now, is there any other method?
tinkyminky93
tinkyminky93 2022 年 6 月 7 日
@Fangjun Jiang sir I applied your suggestion and it seems like that is what I want. But I have a problem. My data becomes 32x1 cell and every element is 2x1 cell. What I want is 32x1 and every element is 1x2. How can I do it?
Fangjun Jiang
Fangjun Jiang 2022 年 6 月 7 日
Provide some example data that others can use directly in MATLAB to help you. For example
' '
'1231231'
can not be used directly in MATLAB, while
a={' '
'1231231'}
can so others can use it to provide you with example code.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

製品

リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by