tableをroun​dを使用して整数にす​る方法について

6 views (last 30 days)
HY
HY on 6 Mar 2021
Commented: HY on 9 Mar 2021
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}

Accepted Answer

OH
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
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
HY
HY on 9 Mar 2021
画像のように1つのcellに4つの座標がある場合ではどのように対処すればよいでしょうか。回答ではmojiとnum1のようにtableを作成していますが、既存のtableではどうすればよいのでしょうか。

Sign in to comment.

More Answers (0)

Categories

Find more on データ型の変換 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!