reallocating matrix concatenated as string
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Berfin Çetinkaya
am 24 Mär. 2022
Kommentiert: Berfin Çetinkaya
am 24 Mär. 2022
birlestirbirincifaz = cell(20,69) ;
for i = 1:20
for j = 1:69
birlestirbirincifaz{i,j} = [num2str(sonucmatrisi(i,j)),'-',num2str(faz1atananmakineler(i,j))] ;
end
end
I combined two matrices as strings using this code.
But now I have to take it apart again. What should I do?
(small snippet of my matrix)
'10-10' '22-22' '42-42'
'193.92-8' '68.8-7' '9.34-1'
'193.92-8' '68.8-8' '9.34-3'
0 Kommentare
Akzeptierte Antwort
Stephen23
am 24 Mär. 2022
Bearbeitet: Stephen23
am 24 Mär. 2022
Much better to use string arrays:
M1 = [10,22,42;193.92,68.8,9.34;193.92,68.8,9.34]
M2 = [10,22,42;8,7,1;8,7,1]
S = M1+"-"+M2
T = split(S,'-')
str2double(T(:,:,1))
str2double(T(:,:,2))
2 Kommentare
Steven Lord
am 24 Mär. 2022
With a string array containing the text representations of numbers you don't need to use str2double. Just calling double is sufficient.
M1 = [10,22,42;193.92,68.8,9.34;193.92,68.8,9.34];
M2 = [10,22,42;8,7,1;8,7,1];
S = M1+"-"+M2;
T = split(S,'-');
M1After = double(T(:,:,1))
M2After = double(T(:,:,2))
Weitere Antworten (1)
Riccardo Scorretti
am 24 Mär. 2022
If I understand well your question, you wish to do this:
sonucmatrisi = zeros(20, 69);
faz1atananmakineler = zeros(20, 69);
for i = 1:20
for j = 1:69
tmp = sscanf(birlestirbirincifaz{i,j}, '%f-%f');
sonucmatrisi(i,j) = tmp(1);
faz1atananmakineler(i,j) = tmp(2);
end
end
Siehe auch
Kategorien
Mehr zu Cell Arrays 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!