reallocating matrix concatenated as string
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Berfin Çetinkaya
le 24 Mar 2022
Commenté : Berfin Çetinkaya
le 24 Mar 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 commentaires
Réponse acceptée
Stephen23
le 24 Mar 2022
Modifié(e) : Stephen23
le 24 Mar 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 commentaires
Steven Lord
le 24 Mar 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))
Plus de réponses (1)
Riccardo Scorretti
le 24 Mar 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
Voir également
Catégories
En savoir plus sur Cell Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!