Replace character in string/cell with the character above it
1 回表示 (過去 30 日間)
古いコメントを表示
String/cell example: --> real string/cell is very long
a= { 'a' ; 'b' ; 'c' ; 'b'}
Wanted outcome:
a_new= { 'a' ; 'a' ; 'c' ; 'c'}
0 件のコメント
採用された回答
the cyclist
2021 年 3 月 11 日
編集済み: the cyclist
2021 年 3 月 11 日
The general rule is not perfectly clear to me, from your small example. Do you mean that you want the even-numbered elements to be replaced? If so, then
anew = a;
a(2:2:end) = a(1:2:end-1);
If not, maybe you could explain in a little more detail.
3 件のコメント
the cyclist
2021 年 3 月 11 日
編集済み: the cyclist
2021 年 3 月 11 日
Here is one way:
a = { 'a' ; 'b' ; 'c' ; 'b' ; 'h' ; 'g' ; 'b'};
replace_idx = find(strcmp(a,'b'));
a_new = a;
a_new(replace_idx) = a_new(replace_idx-1);
This will not work if 'b' is the first element, so you will need to modify this algorithm in that case. But you haven't given info on what you want to do then.
その他の回答 (1 件)
Jan
2021 年 3 月 11 日
編集済み: Jan
2021 年 3 月 11 日
Maybe:
a_new = a;
a_new(2:2:end) = a(1:2:end);
Or:
index = repelemt(1:2:numel(a), 1, 2):
a_new = a(index)
[EDITED] after your comment: "So every b wil be replaced with the character above it"
index = find(strcmp(a, 'b'));
a(index) = a(index - 1);
What about: {'a'; 'b'; 'b'} or {'b'} or {'b', 'a'}?
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!