Hybrid Matrix (strings, double elements)
10 ビュー (過去 30 日間)
古いコメントを表示
I have a string-column-vector A and I have three set of data (three string-column-vectors B, C, D) associate to every element of A.
If I put these together to form a compact matrix (We call X), I cannot do operations between elements of B, C, D.
For example if I wanna do a difference between B and C, this is the error:
Undefined operator '-' for input arguments of type 'string'.
This is because my matrix is a string matrix. How can I make operations betweens the numeric values of matrix X?
A = ["wine"; "beer"; "water"; "The"];
B = [1 3 0.5 0.3];
C = [9 26 0.7 900];
D = [0 565 0 0.3];
% I create a compact matrix
X = [A B C D];
% Now I want to make a difference between B and C, but taking the element FROM MATRI X
diff = X(:,2) - X(:,3);
%But this is the error:
Undefined operator '-' for input arguments of type 'string'.
0 件のコメント
採用された回答
Steven Lord
2020 年 7 月 17 日
編集済み: Steven Lord
2020 年 7 月 17 日
Your concatenation operation (X = [A B C D];) converts the double arrays into string arrays. Instead what you probably want is a table array. I'm going to make one slight modification to your data (transposing B, C, and D.) I'm going to show you two different table arrays, one where A contains data and one where A contains "labels" for the rows of your data.
A = ["wine"; "beer"; "water"; "The"];
B = [1 3 0.5 0.3].';
C = [9 26 0.7 900].';
D = [0 565 0 0.3].';
T_data = table(A, B, C, D)
CminusB = T_data.C - T_data.B
T_label = table(B, C, D, 'RowNames', A)
CminusB2 = T_label.C - T_data.B
beerD = T_label("beer", "D")
waterAll = T_label{"water", :}
0 件のコメント
その他の回答 (1 件)
madhan ravi
2020 年 7 月 17 日
DifF = double(X(:,2)) - double(X(:,3)); % never name a variable diff!!
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Characters and Strings についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!