矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 2764|回复: 16

求早期Fortran聚类程序

[复制链接]
发表于 2024-11-16 13:20:26 | 显示全部楼层 |阅读模式
想让电脑解码手工莫尔斯码,需要聚类分析,最好是Fortran的,速度快。在网上搜了一下,大多是Python程序,速度慢。AI提供了一个Fortran聚类程序,是现代版的Fortran程序,很多内部函数在我的Fortran95个人版上没有,无法运行。哪位大师有早期Fortran聚类程序吗?
     
发表于 2024-11-19 18:23:04 | 显示全部楼层
定义莫尔斯码表:将每个字母和数字映射到相应的莫尔斯码。
读取输入的莫尔斯码序列:从用户或文件中读取莫尔斯码序列。
解码莫尔斯码:根据莫尔斯码表将莫尔斯码转换为文本。
回复 支持 1 反对 0

使用道具 举报

发表于 2024-11-16 13:41:35 | 显示全部楼层
升级一下编译器比较现实。早期就算能找到,各种BUG谁来改?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-11-16 19:16:17 | 显示全部楼层
chipset009 发表于 2024-11-16 13:41
升级一下编译器比较现实。早期就算能找到,各种BUG谁来改?

谢谢回复。
找不到老的就用新的。
回复 支持 反对

使用道具 举报

     
发表于 2024-11-19 18:23:22 | 显示全部楼层
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_decoder
回复 支持 反对

使用道具 举报

     
发表于 2024-11-19 18:24:11 | 显示全部楼层
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, = [0.0, 0.0]
        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_clustering
回复 支持 反对

使用道具 举报

     
发表于 2024-11-19 18:25:52 | 显示全部楼层
楼主试一下这个,下面是卡曼聚类,我这边没有win98电脑
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-11-19 21:06:29 | 显示全部楼层
诸葛赚赚 发表于 2024-11-19 18:23
定义莫尔斯码表:将每个字母和数字映射到相应的莫尔斯码。
读取输入的莫尔斯码序列:从用户或文件中读取莫 ...

谢谢分享。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-16 21:57:40 | 显示全部楼层
本帖最后由 qyg123 于 2025-1-16 23:10 编辑

分析了一个在10.117MHz收到的cw信号,整理后见下图:
10.117-1.png
10.117-3.png
聚类分析程序给出“滴”的分割点是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



回复 支持 反对

使用道具 举报

     
发表于 2025-1-17 08:07:16 | 显示全部楼层
FORTRAN程序设计语言是40多年前的事情了。C语言还记得,行吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-17 08:49:39 | 显示全部楼层
koei 发表于 2025-1-17 08:07
FORTRAN程序设计语言是40多年前的事情了。C语言还记得,行吗

FORTRAN语言对数学运算优化了,数学运算最快,浮点运算比C语言都快。
C语言在灵活上仅次于汇编,可以对位操作。
我现在搞大量、复杂的数学分析就用FORTRAN,少量、简单的数学分析用excel。对文件操作就用C语言。
回复 支持 反对

使用道具 举报

     
发表于 2025-2-25 15:10:46 | 显示全部楼层
qyg123 发表于 2025-1-17 08:49
FORTRAN语言对数学运算优化了,数学运算最快,浮点运算比C语言都快。
C语言在灵活上仅次于汇编,可以对 ...

只玩C语言,学习了。
回复 支持 反对

使用道具 举报

     
发表于 2025-2-25 17:22:02 | 显示全部楼层
不知要多早的早期FORTRAN程序
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-2-25 19:49:37 | 显示全部楼层
sys3 发表于 2025-2-25 15:10
只玩C语言,学习了。

C语言不错,在高级语言里最灵活,虽老但不落后。有些基本操作只有C语言能够执行。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-2-25 19:53:19 | 显示全部楼层
sbyywf 发表于 2025-2-25 17:22
不知要多早的早期FORTRAN程序

现在很多程序都是与新版本配套的,所以,还是用新版本的编程语言吧。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-29 15:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表