Using Typecast Function in Code Generation
6 ビュー (過去 30 日間)
古いコメントを表示
Good afternoon,
I am trying to use the typecast function for a project with code generation.
% where temp2 is a double that is less than 0
temp = typecast((65535-(temp2*100)),'uint16');
liftangle = temp;
I get the following error:
Data 'liftangle' (#81) is inferred as a variable size matrix, while its specified type is something else.
I have also tried to replicate the above code without using typecast, but the Code Optimizer is rounding all negatives to 0 before I get a chance to do anything.
% Matlab Function Code
temp = double(((dutycycle-sensor_map(2))/sensor_map(1))-zero_value);
if temp < 0
temp = (65535-(temp*100));
angle = uint16(temp);
else
angle = uint16(temp*100);
end
tmp = (int32_T)rt_roundd(((((((real_T)rtb_LiftAngle_o1) * 1.52587890625E-5)
* 100.0) - 55.8) / 0.643) - zero_value);
if (tmp >= 0) {
rtb_DataTypeConversion40 = (uint16_T)tmp;
} else {
rtb_DataTypeConversion40 = 0U;
}
0 件のコメント
回答 (1 件)
Walter Roberson
2016 年 3 月 28 日
if dutycycle - zerovalue * sensormap(1)
... then the result will be negative
With regards to
temp = typecast((65535-(temp2*100)),'uint16');
to understand this we need to know the data type of temp2. If it is not int16 or uint16 then (65535-(temp2*100) does not have the same storage size as uint16 and so the typecast would either fail (if temp2 is int8 or uint8) or would produce multiple outputs (if temp2 is int32, uint32, single, or double)
0 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!