reallocating matrix concatenated as string

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'

 採用された回答

Stephen23
Stephen23 2022 年 3 月 24 日
編集済み: Stephen23 2022 年 3 月 24 日

0 投票

Much better to use string arrays:
M1 = [10,22,42;193.92,68.8,9.34;193.92,68.8,9.34]
M1 = 3×3
10.0000 22.0000 42.0000 193.9200 68.8000 9.3400 193.9200 68.8000 9.3400
M2 = [10,22,42;8,7,1;8,7,1]
M2 = 3×3
10 22 42 8 7 1 8 7 1
S = M1+"-"+M2
S = 3×3 string array
"10-10" "22-22" "42-42" "193.92-8" "68.8-7" "9.34-1" "193.92-8" "68.8-7" "9.34-1"
T = split(S,'-')
T = 3×3×2 string array
T(:,:,1) = "10" "22" "42" "193.92" "68.8" "9.34" "193.92" "68.8" "9.34" T(:,:,2) = "10" "22" "42" "8" "7" "1" "8" "7" "1"
str2double(T(:,:,1))
ans = 3×3
10.0000 22.0000 42.0000 193.9200 68.8000 9.3400 193.9200 68.8000 9.3400
str2double(T(:,:,2))
ans = 3×3
10 22 42 8 7 1 8 7 1

2 件のコメント

Steven Lord
Steven Lord 2022 年 3 月 24 日
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))
M1After = 3×3
10.0000 22.0000 42.0000 193.9200 68.8000 9.3400 193.9200 68.8000 9.3400
M2After = double(T(:,:,2))
M2After = 3×3
10 22 42 8 7 1 8 7 1
Berfin Çetinkaya
Berfin Çetinkaya 2022 年 3 月 24 日
Thank you for help !

サインインしてコメントする。

その他の回答 (1 件)

Riccardo Scorretti
Riccardo Scorretti 2022 年 3 月 24 日

0 投票

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

カテゴリ

ヘルプ センター および File ExchangeData Types についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by