求早期Fortran聚类程序
想让电脑解码手工莫尔斯码,需要聚类分析,最好是Fortran的,速度快。在网上搜了一下,大多是Python程序,速度慢。AI提供了一个Fortran聚类程序,是现代版的Fortran程序,很多内部函数在我的Fortran95个人版上没有,无法运行。哪位大师有早期Fortran聚类程序吗?定义莫尔斯码表:将每个字母和数字映射到相应的莫尔斯码。
读取输入的莫尔斯码序列:从用户或文件中读取莫尔斯码序列。
解码莫尔斯码:根据莫尔斯码表将莫尔斯码转换为文本。https://cdn.jsdelivr.net/gh/master-of-forums/master-of-forums/public/images/patch.gif 升级一下编译器比较现实。早期就算能找到,各种BUG谁来改? chipset009 发表于 2024-11-16 13:41
升级一下编译器比较现实。早期就算能找到,各种BUG谁来改?
谢谢回复。
找不到老的就用新的。 program morse_decoder
implicit none
character(len=1) :: input_char
character(len=5) :: morse_code
integer :: i, j
character(len=26), parameter :: alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
character(len=10), dimension(26) :: morse_table = &
['.-', '-...', '-.-.', '-..', '.', '..-.', '--.', '....', '..', '.---', &
'-.-', '.-..', '--', '-.', '---', '.--.', '--.-', '.-.', '...', '-', &
'..-', '...-', '.--', '-..-', '-.--', '--..']
print *, "Enter Morse code (spaces between letters, slashes between words):"
do while (input_char /= '/')
read(*, '(A)') input_char
if (input_char == ' ') then
print *, " "
else
call decode_morse(input_char)
end if
end do
contains
subroutine decode_morse(input_char)
character(len=1), intent(in) :: input_char
integer :: i
do i = 1, 26
if (input_char == morse_table(i)) then
print *, alphabet(i:i)
exit
end if
end do
end subroutine decode_morse
end program morse_decoderhttps://cdn.jsdelivr.net/gh/master-of-forums/master-of-forums/public/images/patch.gif program kmeans_clustering
implicit none
integer, parameter :: n = 100, k = 3, max_iter = 100
real, dimension(n, 2) :: data
real, dimension(k, 2) :: centroids
integer, dimension(n) :: labels
integer :: i, j, iter, closest_centroid
real :: distance, min_distance
! Initialize data (for demonstration purposes, using random values)
call random_seed()
call random_number(data)
! Initialize centroids randomly from the data points
do i = 1, k
centroids(i, :) = data(i, :)
end do
! K-means clustering algorithm
do iter = 1, max_iter
! Assign each data point to the nearest centroid
do i = 1, n
min_distance = huge(distance)
do j = 1, k
distance = sqrt((data(i, 1) - centroids(j, 1))**2 + (data(i, 2) - centroids(j, 2))**2)
if (distance < min_distance) then
min_distance = distance
closest_centroid = j
end if
end do
labels(i) = closest_centroid
end do
! Update centroids as the mean of assigned data points
do j = 1, k
centroids(j, :) =
end do
do i = 1, n
centroids(labels(i), 1) = centroids(labels(i), 1) + data(i, 1)
centroids(labels(i), 2) = centroids(labels(i), 2) + data(i, 2)
end do
do j = 1, k
centroids(j, :) = centroids(j, :) / sum(labels == j)
end do
end do
! Print results
print *, "Final centroids:"
do i = 1, k
print *, centroids(i, :)
end do
print *, "Labels:"
do i = 1, n
print *, labels(i)
end do
end program kmeans_clusteringhttps://cdn.jsdelivr.net/gh/master-of-forums/master-of-forums/public/images/patch.gif 楼主试一下这个,下面是卡曼聚类,我这边没有win98电脑https://cdn.jsdelivr.net/gh/master-of-forums/master-of-forums/public/images/patch.gif 诸葛赚赚 发表于 2024-11-19 18:23
定义莫尔斯码表:将每个字母和数字映射到相应的莫尔斯码。
读取输入的莫尔斯码序列:从用户或文件中读取莫 ...
谢谢分享。 本帖最后由 qyg123 于 2025-1-16 23:10 编辑
分析了一个在10.117MHz收到的cw信号,整理后见下图:
聚类分析程序给出“滴”的分割点是71ms(含)一下。解码结果很难理解,不知道是解码错误还是加密了 。如果是解码错误(无法对应),程序会提示,但是程序没有提示,全部顺利解码。解码结果如下:
2
1
n
1
2
2
w
1
1
1
s
1
1
2
u
2
1
n
2
1
n
2
1
2
2
y
1
e
1
1
1
s
1
1
1
2
2
3
2
1
2
1
c
1
1
1
2
2
3
2
1
2
1
c
1
e
1
1
1
s
1
2
1
r
1
1
i
2
2
1
g
1
2
2
2
2
1
2
2
2
o
2
2
2
o
1
1
1
s
1
e
1
1
1
s
1
2
a
2
t
1
1
i
1
2
1
1
l
2
1
n
2
2
1
g
1
e
1
2
1
r
1
1
1
1
2
4
1
e
1
2
a
2
2
m
1
e
1
1
1
s
FORTRAN程序设计语言是40多年前的事情了。C语言还记得,行吗 koei 发表于 2025-1-17 08:07
FORTRAN程序设计语言是40多年前的事情了。C语言还记得,行吗
FORTRAN语言对数学运算优化了,数学运算最快,浮点运算比C语言都快。
C语言在灵活上仅次于汇编,可以对位操作。
我现在搞大量、复杂的数学分析就用FORTRAN,少量、简单的数学分析用excel。对文件操作就用C语言。 qyg123 发表于 2025-1-17 08:49
FORTRAN语言对数学运算优化了,数学运算最快,浮点运算比C语言都快。
C语言在灵活上仅次于汇编,可以对 ...
只玩C语言,学习了。 不知要多早的早期FORTRAN程序 sys3 发表于 2025-2-25 15:10
只玩C语言,学习了。
C语言不错,在高级语言里最灵活,虽老但不落后。有些基本操作只有C语言能够执行。 sbyywf 发表于 2025-2-25 17:22
不知要多早的早期FORTRAN程序
现在很多程序都是与新版本配套的,所以,还是用新版本的编程语言吧。
页:
[1]
2