reallocating matrix concatenated as string

1 回表示 (過去 30 日間)
Berfin Çetinkaya
Berfin Çetinkaya 2022 年 3 月 24 日
コメント済み: Berfin Çetinkaya 2022 年 3 月 24 日
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 日
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 日
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
  1 件のコメント
Berfin Çetinkaya
Berfin Çetinkaya 2022 年 3 月 24 日
Thank you for help !

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

カテゴリ

Help Center および File ExchangeData Type Conversion についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by