Convert 8x3 char to string sequence (MATLAB)

1 次查看(过去 30 天)
Dear,
I have this char characters on MATLAB:
val =
'011'
'010'
'001'
'000'
'000'
'001'
'010'
'011'
I want to convert them to one sequence of type string to obtain this result:
"011010001000000001010011"

采纳的回答

Walter Roberson
Walter Roberson 2022-12-1
reshape(val.', 1, [])

更多回答(2 个)

David Hill
David Hill 2022-12-1
val=['011'
'010'
'001'
'000'
'000'
'001'
'010'
'011']
val = 8×3 char array
'011' '010' '001' '000' '000' '001' '010' '011'
val=val'
val = 3×8 char array
'00000000' '11000011' '10100101'
val=val(:)'
val = '011010001000000001010011'

Steven Lord
Steven Lord 2022-12-1
val = ...
['011'
'010'
'001'
'000'
'000'
'001'
'010'
'011'];
s = join(string(val), '')
s = "011010001000000001010011"
  2 个评论
Walter Roberson
Walter Roberson 2022-12-1
Without using string(), such as for older MATLAB:
val = ...
['011'
'010'
'001'
'000'
'000'
'001'
'010'
'011'];
s = strjoin(cellstr(val), '')
s = '011010001000000001010011'
Walter Roberson
Walter Roberson 2022-12-1
Interesting, using string() is measurably faster here.
format long g
val = char(randi(+'0', +'1'), 5000, 50);
N = 100;
t_string = zeros(N,1);
t_cell = zeros(N,1);
for K = 1 : N; start = tic; s = join(string(val), ''); stop = toc(start); t_string(K) = stop; end
for K = 1 : N; start = tic; s = strjoin(cellstr(val), ''); stop = toc(start); t_cell(K) = stop; end
[mean(t_string(2:end)), mean(t_cell(2:end))]
ans = 1×2
1.0e+00 * 1.15959595959596e-05 4.07575757575758e-05
plot([t_string(2:end), t_cell(2:end)]);
legend({'string()', 'cellstr()'})

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Testing Frameworks 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by