reallocating matrix concatenated as string
2 views (last 30 days)
Show older comments
Berfin Çetinkaya
on 24 Mar 2022
Commented: Berfin Çetinkaya
on 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 Comments
Accepted Answer
Stephen23
on 24 Mar 2022
Edited: Stephen23
on 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 Comments
Steven Lord
on 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))
More Answers (1)
Riccardo Scorretti
on 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
See Also
Categories
Find more on Numeric Types in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!