tableをroundを使用して整数にする方法について
8 views (last 30 days)
Show older comments
tableの値が少数になっておりroundを使用して整数にしようとしましたが、できませんでした。
tableの値を整数にするのは不可能でしょうか。ちなみにデータストアに格納してからroundで整数にすることはできましたが、行いたいコードの都合上、tableのままで整数にしたいです。
参考程度に私のtableの一部分を載せておきます。{1×4 double}は実際は[100.1 200.1 4 5]のようになっており、[100 200 4 5]のように整数にしたいです。
アドバイス等いただけると幸いです。
よろしくお願いいたします。
imageFilename BothHands Drinking
_______________________________________________________________________________ ____________ ____________
{'C:\Users*** Lab\Desktop\MATLAB\***0.png' } {1×4 double} {0×0 double}
{'C:\Users\*** Lab\Desktop\MATLAB\***1.png' } {1×4 double} {0×0 double}
{'C:\Users\*** Lab\Desktop\MATLAB\***2.png' } {1×4 double} {0×0 double}
0 Comments
Accepted Answer
OH
on 6 Mar 2021
cellfun()を使用しました。
なぜround()をそのまま使うとエラーになるかと言うと、
Table配列の中にCell配列でデータを格納してしているためです。
今回のように文字(charやstring)と数値(double)が混在する配列や、
一つの要素に数値ベクトルをまとめる際にCell配列は使われますね。
下記ではテーブルTを作成し、2列目と3列目にある数値ベクトルをroundで丸めました。
moji = {'A';'B';'C'};
num1 = {1.7;50.3;25.7};
num2 = {1:0.2:10;10:0.5:20;20:30};
T = table(moji,num1,num2);
T{:,2:3} = cellfun(@round,T{:,2:3},'UniformOutput',false);
4 Comments
Akira Agata
on 8 Mar 2021
もし table 内の各行に保存される数値配列が常に 1×N の行ベクトルであれば、以下のように数値配列のまま格納することができます。
moji = ["A";"B";"C"];
num1 = 10*rand(3,4);
T = table(moji,num1);
>> T
T =
3×2 table
moji num1
____ ________________________________________
"A" 4.7109 0.42431 0.9673 7.2244
"B" 0.59619 0.71445 8.1815 1.4987
"C" 6.8197 5.2165 8.1755 6.5961
この場合、cellfun を使わなくても直接 round を適用することが可能です。
T.num1 = round(T.num1);
>> T
T =
3×2 table
moji num1
____ ________________
"A" 5 0 1 7
"B" 1 1 8 1
"C" 7 5 8 7
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!