Convert 8x3 char to string sequence (MATLAB)

1 Ansicht (letzte 30 Tage)
high speed
high speed am 1 Dez. 2022
Kommentiert: Walter Roberson am 1 Dez. 2022
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"

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 1 Dez. 2022
reshape(val.', 1, [])

Weitere Antworten (2)

David Hill
David Hill am 1 Dez. 2022
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 am 1 Dez. 2022
val = ...
['011'
'010'
'001'
'000'
'000'
'001'
'010'
'011'];
s = join(string(val), '')
s = "011010001000000001010011"
  2 Kommentare
Walter Roberson
Walter Roberson am 1 Dez. 2022
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 am 1 Dez. 2022
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()'})

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Argument Definitions finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by