How to round (or convert) an array to integer?

107 ビュー (過去 30 日間)
B Duan
B Duan 2016 年 11 月 15 日
コメント済み: B Duan 2016 年 11 月 15 日
I need to first convert multiple images to an array of intensity value and then do some calculations. I need to round up each intensity in the array first before the calculations. I tried just I1_int = round(I1_int); but it did not work as "Undefined function 'round' for input arguments of type 'struct'." Any idea would be greatly appreciated! Thank you! Here is a portion of my code.
I1_int = regionprops(M, I1, 'MeanIntensity', 'Centroid'); %Intensities of first frame
if length(I)>1
I2_int = regionprops(M, I2, 'MeanIntensity', 'Centroid'); %Intensities of last frame
Final = cell2mat({I2_int(:).MeanIntensity});
Initial = cell2mat({I1_int(:).MeanIntensity});
Percent = 100*[(Final - I2_BG) - (Initial - I1_BG)]./ (Initial- I1_BG)


Image Analyst
Image Analyst 2016 年 11 月 15 日
You need to call ceil() on the mean intensities, not on the measurement structure itself. Try this:
props = regionprops(M, I1, 'MeanIntensity', 'Centroid'); %Intensities of first frame
% Extract the mean intensities by themselves into a new array.
meanIntensities = [props.MeanIntensity];
% Round up to nearest integer.
I1_int = ceil(meanIntensities);
  4 件のコメント
B Duan
B Duan 2016 年 11 月 15 日
Yes, indeed I1_int is a double vector and round to the nearest integer. Thank you so much guys.


その他の回答 (1 件)

Daniel kiracofe
Daniel kiracofe 2016 年 11 月 15 日
ceil() should work to round up to the nearest integer
  1 件のコメント
B Duan
B Duan 2016 年 11 月 15 日
Thank you! It works!


Community Treasure Hunt

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

Start Hunting!

Translated by