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 件)

カテゴリ

ヘルプ センター および File Exchange で Characters and Strings についてさらに検索

製品

リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by