MATLAB如何将cx_n四舍五入到十分位而非直接取整为整数
MATLAB取整逻辑调整方案
你当前代码输出整数的核心原因是round()函数默认四舍五入到最近整数,要实现向上取整到最接近的十分位,按以下逻辑修改即可:
- 十分位取整实现逻辑:要把数值向上取整到指定小数位,通用方法是先把数值放大对应倍数,做完向上取整后再缩小回原量级。要取到十分位(保留1位小数),对应放大10倍,用MATLAB内置的向上取整函数
ceil()处理后再除以10即可,示例:
% 0.58向上取整到十分位的计算过程 ceil(0.58 * 10) / 10 % 运算步骤:0.58*10=5.8 → ceil(5.8)=6 → 6/10=0.6
- 调整后的完整代码:
Fn = 3; %Nyquist Frequency Fnr = 6; %Nyquist Rate Fs = Fnr*5; %Sampling frequency Ts = 1 / Fs; %Sampling period T = 1 / 3; N = T / Ts; %Number of samples per period start = 0; stop =N-1; c_increment = 1; c_n = start:c_increment:stop; c_nTs = c_n*Ts; cx_n = sin(2*pi*3*c_nTs); % 核心修改:替换原来的round(cx_n),向上取整到十分位 p = ceil(cx_n * 10) / 10; for m_d = 1:length(cx_n) for quantisation = 1:length(yt) if (m_d ~= quantisation ) stem(c_nTs, p); end end end
- 可选适配:如果你的实际需求是四舍五入到十分位而非向上取整,把上面代码里的
ceil替换为round即可,同样能得到0.6的结果,不会取整为1。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

