Filter löschen
Filter löschen

Is there a way to "vectorize" this segment of code?

1 Ansicht (letzte 30 Tage)
David Rikert
David Rikert am 10 Feb. 2024
Kommentiert: David Rikert am 10 Feb. 2024
% turn each of these string array rows into integers
[rows,cols] = size(permsList);
permsNbrs = zeros(rows,1);
a = string(permsList); % convert to string, so we can use strcat
for i = 1:rows
b = "";
for j = 1:cols
b = strcat(b,a(i,j));
end % for j
permsNbrs(i,1) = str2double(b);
end % for i
  1 Kommentar
Matt J
Matt J am 10 Feb. 2024
We don't have the input permsList, so we do not know what anything is.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Stephen23
Stephen23 am 10 Feb. 2024
Verschoben: Matt J am 10 Feb. 2024
S = string(randi([0,9], 5,4))
S = 5×4 string array
"0" "4" "8" "8" "6" "1" "1" "3" "8" "2" "6" "7" "2" "8" "5" "5" "7" "2" "6" "6"
D = str2double(join(S,""))
D = 5×1
488 6113 8267 2855 7266

Weitere Antworten (1)

Matt J
Matt J am 10 Feb. 2024
Bearbeitet: Matt J am 10 Feb. 2024
I'm going to guess that this is what you are trying to do.
permsList=string(randi([0,9], 5,4))
permsList = 5×4 string array
"5" "0" "3" "3" "1" "6" "6" "9" "4" "9" "5" "9" "5" "3" "2" "3" "8" "7" "7" "0"
permsNbrs = str2double(permsList)*10.^( width(permsList)-1:-1:0)'
permsNbrs = 5×1
5033 1669 4959 5323 8770
  2 Kommentare
David Rikert
David Rikert am 10 Feb. 2024
Thanks. Exactly what I was looking for.
Matt J
Matt J am 10 Feb. 2024
You're quite welcome, but please Accept-click the answer (green button) to indicate so.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Programming finden Sie in Help Center und File Exchange

Produkte


Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by