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

조회 수: 5 (최근 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!