VB.NET写入正弦函数值到文本文件结果异常,应如何修正代码?
问题分析
- 条件判断逻辑颠倒:现有代码的判断条件覆盖了所有t≤69060的场景,会直接输出0,仅t>69060时才进入正弦计算分支,和需求完全相反。
- 正弦函数参数错误:你需要的是在14400~69060区间内完成半个正弦周期(从0上升到峰值8再回落至0),原有公式的相位计算、偏移量设置都不符合需求,冗余的相位偏移还会额外引入计算误差。
修复方案
首先修正判断逻辑:仅当t处于[14400, 69060)区间时计算正弦值,其余区间直接输出0。
其次调整正弦公式:区间总长度为69060 - 14400 = 54660,半个正弦周期对应相位从0到π,因此相位计算逻辑为π*(t-14400)/54660,乘以振幅8即可得到符合要求的输出。
修改后的核心代码如下:
Using textfile As System.IO.StreamWriter = My.Computer.FileSystem.OpenTextFileWriter(Path, False, System.Text.Encoding.UTF8) textfile.WriteLine($"Time{Tab}V(OUT)") For t As UInt32 = 0UI To 86400UI Step 1UI ' 非正弦输出区间直接返回0 If t < 14400UI OrElse t >= 69060UI Then textfile.WriteLine(t.ToString(Eng).PadLeft(10, "0"c) & Tab & 0.0.ToString(Eng)) Else ' 计算半周期正弦值 Dim phase As Double = Math.PI * (t - 14400UI) / 54660.0 Dim Value As Double = 8.0 * Math.Sin(phase) textfile.WriteLine(t.ToString(Eng).PadLeft(10, "0"c) & Tab & Value.ToString(Eng)) End If Next textfile.Close() End Using
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

