===VB====
Dim a(30) As Double
Dim b(10) As Double
Private Sub Command1_Click()
Text2.Text = ""
For i = 1 To 10
b(i) = (a(3 * i - 2) + a(3 * i - 1) + a(3 * i)) / 3
Text2.Text = Text2.Text & vbCrLf & Format(b(i), "#0.0")
Next i
End Sub
Private Sub Swap( _
ByRef a1 As Double, ByRef a2 As Double)
Dim t As Double
t = a1: a1 = a2: a2 = t
End Sub
Private Sub Command2_Click()
Dim x As Double, y As Double, z As Double
Text2.Text = ""
For i = 1 To 10
x = a(3 * i - 2): y = a(3 * i - 1): z = a(3 * i)
If x > y Then Swap x, y
If y > z Then Swap y, z
If x > y Then Swap x, y
Text2.Text = Text2.Text & Format(y, "#0.0") & vbCrLf
Next i
End Sub
Private Sub Command3_Click()
Dim M As Double
M = 4
For i = 1 To 9
If Abs(b(i + 1) - b(i)) > M Then
b(i + 1) = b(i)
End If
Next i
Text2.Text = ""
For i = 1 To 10
Text2.Text = Text2.Text & i & ":" & Format(b(i), "#0.0") & vbCrLf
Next i
End Sub
Private Sub Command4_Click()
Text1.Text = ""
For i = 1 To 10
Text1.Text = Text1.Text & i & ":" & Format(b(i), "#0.00") & vbCrLf
Next i
End Sub
Private Sub Form_Load()
For i = 1 To 30
a(i) = 20 + Rnd * 3 * IIf(Rnd > 0.5, 1, -1)
Next i
Text1.Text = ""
For i = 1 To 30
Text1.Text = Text1.Text & vbCrLf & i & ":" & Format(a(i), "#0.0")
Next i
End Sub
======VB=====
以下是C语言版本,F1 是平均值滤波,F2是中位值滤波,F3是阈值滤波
====C=====
void f1(double a[],double b[],int N)
{
int i,j,k;
double s;
for (i=0,j=0;i<30;i+=N)
{
for (s=0,k=0;k for (k=0;k } printf("\\n"); } double Max(double x,double y) { return x>y?x:y; } double Min(double x,double y) { return x { int i,j,k; double s; for (i=0,j=0;i<30;i+=N) { for (s=0,k=0;k - Min(Min(a[i],a[i+1]),a[i+2]); for (k=0;k } printf("\\n"); } void f3(double a[],double b[],int M) { int i,j,k; double s; b[0]=a[0]; printf("%6.0f -> %6.0f\\n",a[0],b[0]); for (i=1;i<30;i++) { if (a[i]-b[i-1]<=M) b[i]=a[i]; else b[i]=b[i-1]; printf("%6.0f -> %6.0f\\n",a[i],b[i]); } printf("\\n"); } main() { double a[30]={12,11,14,13,15,16,17,15,18, 16,15,17,19,20,18,21,23,20, 24,22,21,19,18,20,17,18,16, 15,13,14}; double b[30]; int N=3; double M=2; printf("F1\\n"); f1(a,b,N); printf("F2\\n"); f2(a,b,N); printf("F3\\n"); f3(a,b,M); }