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

21 次查看(过去 30 天)
HY
HY 2021-3-6
评论: HY 2021-3-9
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}

采纳的回答

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

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 データ型の変換 的更多信息

Community Treasure Hunt

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

Start Hunting!