AI初体验 - 最初的两次AI辅助开发

news2024/11/29 3:47:27

1.第一个尝试:物理公式

2023年6月7日,是我第一次在 AI(ChatGPT)的帮助下,完成了一个数据分析工作。当时手里有一些数据,我大致知道物理原理,但是无法给出一个合适的公式。我大概工作了5个小时,没有进展,数据对不上,一个朋友推荐我用ChatGPT——AI的知识库很庞杂,它说出那个公式后,我立马意识到那个公式是对的。然后,使用这个公式代入数据后,误差直接与测量的误差相匹配,0.5~1%的误差级别,我的测量误差也就是这个区间。

2.第二个尝试:编写脚本

昨天(2023年6月8日)尝试在进行一个.bat脚本编写,发现系统执行时无反馈;让AI介入了多轮,检查语句语法,来回折腾了10几个回合还是不行。这个脚本里会用到一个.bat的高级扩展语法,我怀疑是系统不支持。后来,我想到它最初给的解决方案是python脚本,于是想再试试,下载了python执行环境,这一次,我没有让AI直接辅助编写,而是仅仅询问必要的语法规则。然后大概5~6轮后,程序正常执行了:

import os
import re

print(os.getcwd());
prefix_re = re.compile(r'^(\d+\.\d+)')

for filename in os.listdir(os.getcwd()):
    #try:
        match = prefix_re.match(filename)
        if match:
            sample_rate = match.group(1);
            csv_filename = filename;
            trc_filename = 'trc\\' + filename.replace("txt", "trc");
            vol_ratio = "1";
            cmdline = r'D:\git2023\project\SampleDataTransferI\SampleData_CSV2LecoryTrc\bin\Debug\net6.0\SampleData_CSV2LecoryTrc.exe %s %s %s%s %s'%(csv_filename,trc_filename,sample_rate,"e-6",vol_ratio);
            print(cmdline);
            os.system(cmdline);
    #except:
    #    continue

上面的代码会从文件名中提取浮点格式的数字信息,然后将其整理成命令行参数,调用外部命令执行。

作为一个交互式的函数辅助查询用途,AI工作的非常完美,询问物理公式之类的,都很棒。这些明确的知识点,AI能够工作的很完美,这里有另一个例子(Jun09,2023清晨):

## 来自你的消息:
三相电机的知识,您有储备吗?

## 来自ChatAI的消息:
是的,我有一些基础的三相电机知识。您需要了解哪些方面的内容呢?

## 来自你的消息:
三相电机的频谱中会出现大量的谐波,这些谐波是怎么出现的?

## 来自ChatAI的消息:
当三相电机运行时,由于电力系统和电机的非线性特性,会导致电机回路中出现许多谐波。这些谐波会表现为电压、电流、磁场等各种物理量的高频分量。

谐波的产生原因主要有以下几点:

1. 非线性负载特性:在三相电机中,负载一般都是非线性的,在电机运行时,会产生许多高次谐波分量。

2. 空气隙非线性磁饱和:在电机运行时,由于铁芯的磁化曲线是非线性的,电机中的磁场会因为磁饱和而产生谐波分量。

3. 非对称电压幅值和相位差:由于电力系统中的电压波形和相位存在误差或不对称,导致电机回路中产生谐波分量。

4. 反电动势(back EMF):当电机运行时,转子在磁场的作用下会产生反电动势,而反电动势也会产生谐波分量。

这些因素都会导致三相电机回路中产生谐波分量,需要注意对这些问题进行分析和解决,以减小谐波对电机运行的影响。

## 来自你的消息:
但是它的谐波会出现明显的规律性。比如谐波会显得是某种模式在更高频谱不断重复,您能推导出这种机制出现的原因吗?

## 来自ChatAI的消息:
是的,三相电机谐波分析中存在一种很常见的现象,即谐波会表现出一定的规律性和模式性。这是因为三相电机谐波分析中,三相电机的相位关系具有固定的周期性,导致谐波在频谱中呈现出一定的规律性和模式性。

具体来说,三相电机的谐波分量可以表示为正弦函数的叠加,其中每个正弦函数的频率是基波频率的整数倍。因此,谐波分量在频谱中呈现出明显的重复模式,这种模式主要是由于谐波分量的频率间隔固定导致的。

此外,三相电机的相角也对谐波模式的出现产生了影响。当三相电机的相角为120度时,谐波分量在频谱中呈现出最大的规律性,这是因为此时三相电机中的三相信号在频域中具有对称性。相角为其他值时,谐波分量在频谱中的规律性会不同程度地下降。

因此,三相电机谐波分析中的规律性和模式性产生的原因主要是由于电机的相位关系固定、谐波分量频率间隔固定以及电机相角对谐波分量规律性的影响。

## 来自你的消息:
FFT中出现的高频谐波是否与采样的时长有关,比如,如果不能保证整周期采样,可能就会出现某些并不存在的谐波?

## 来自ChatAI的消息:
是的,FFT中出现的高频谐波与采样时长是有关系的。在傅里叶变换中,频域分辨率等于采样频率除以采样点数。如果采样时间不足够长,就无法对较高频率的信号进行正确的采样和分析,从而导致在FFT分析中出现一些伪谐波。

例如,如果某个信号的频率为1000Hz,而采样率为2000Hz,那么采样信息只能捕获1000Hz以下的频率变化,高于1000Hz的变化信息会缺失。如果此时使用FFT对采样数据进行频谱分析,那么可能会出现多余的频率分量,而这些分量并非真实存在的谐波。

此外,采样时长也会对FFT分析结果的精度产生影响。在进行FFT分析时,如果采样时长不够长,那么其精度会受到限制,因为FFT要求输入序列是周期函数,而如果采样时长不够长,就无法满足这个条件,从而导致谐波分量失真。

因此,为了避免出现伪谐波,我们应该尽量保证采样时间足够长,以保证每个信号周期都被充分地采样到。如果不能保证整周期采样,可以采用其他方法,如插值法,来尽量减小采样误差和谐波失真的影响。

## 来自你的消息:
您能举一个伪谐波的例子吗?比如可以给出一个matlab的.m文件的例子。通过调整参数,可以让伪谐波出现,或者消失。你能做到吗?

## 来自ChatAI的消息:
好的,我可以给您一个MATLAB代码的例子来说明伪谐波的产生和如何避免。

```matlab
% 生成一个1000Hz正弦信号和一个2000Hz正弦信号
fs = 8000;
t = 0:1/fs:0.01;
f1 = 1000;
f2 = 2000;
x = sin(2*pi*f1*t) + sin(2*pi*f2*t);

% 对信号进行FFT分析
N = length(x);
y = fft(x, N);
f = fs*(0:(N-1))/N;
figure;
plot(f, abs(y));

% 修改采样时间长度,使得其中一个频率信号采样不足整个周期
t_short = 0:1/fs:0.008;
x = sin(2*pi*f1*t_short) + sin(2*pi*f2*t_short);

% 再次进行FFT分析,此时伪谐波出现
N = length(x);
y_short = fft(x, N);
f_short = fs*(0:(N-1))/N;
figure;
plot(f_short, abs(y_short));
```

在上面的代码中,我们首先生成了一个由1000Hz正弦信号和2000Hz正弦信号叠加而成的信号,并对其进行FFT分析。由于采样时间足够长,分析结果显示信号确实包含这两个频率的谐波分量。

接着,我们修改采样时间长度,使得其中一个频率信号采样不足整个周期。再次对采样结果进行FFT分析,就会出现伪谐波分量的现象。

最后,我们可以通过增加采样时间长度来消除伪谐波,再次进行FFT分析,就可以得到正确的结果,不再出现伪谐波。

通过这个例子,我们可以看到,采样时间长度对FFT分析结果的精度具有重要影响。如果采样时间不足够长,就有可能出现伪谐波的情况。为避免伪谐波的产生,我们应该尽量保证采样时间足够长,这里的例子只是演示,实际应用中具体时间长度与信号频率、波形都有关系。

## 来自你的消息:
感谢 ,上午我会检查您的代码。如果有结果,我会通知您。

## 来自ChatAI的消息:
好的,非常感谢!如果您在检查过程中有任何问题或者需要更多的帮助,欢迎随时向我提问。

AI的表现会非常诚恳,给你更多的信息,拓展与问题相关的知识点。但是它给出的建议并不是完全正确的,很多时候,你必须经过测试。 

昨晚还测试过它对近体诗的理解。他对一些非常基础的知识点理解的不够——比如它甚至不明白近体诗的句子必须每一句字数相等。在提示后,甚至指出了它的回答前后矛盾,它仍然会坚持自己的看法——它会表达您说的对,但是它的逻辑无法很快做出修改。尝试写出的一些诗作,有点惨不忍睹,在这些方面,甚至达不到普通幼童的智力水平。在你一次次地做相关提示后,它仍然会坚持错误的写法。并且错误会显得更离。

 3.ChatGPT最适合的工作:

你需要询问具体的问题,把所有的可能歧义消除掉。 AI会回答的又快又好。AI作为智能助理是够格的。

# Me

正则表达式,浮点数,小数点可出现也可不出现的语法是什么? 您可以在 prefix_re = re.compile(r'^(\d+\.\d+)') 的基础上改。

#AI

要改变正则表达式以让小数点可出现也可不出现,可以使用问号表示小数点是可选的。下面是一个修改后的正则表达式:

prefix_re = re.compile(r'^(\d+(?:\.\d+)?)')
这个表达式中,问号放在小数点前面的括号中(使用非捕获分组 (?:)),表示小数点是可选的。\d+表示匹配一个或多个数字。(?:\.\d+)?表示匹配一个小数点后跟一个或多个数字的组合,这个组合可以出现一次或者不出现。通过把这两部分合在一起并添加起始字符 ^,可以匹配以一个或多个数字(包括可选的小数点和数字)开头的字符串

后记:那段AI写的演示FFT出现伪谐波的代码

是错的,原始信号:

它以为会出现伪谐波的情形:仍然是两条谱线:

没有额外的谐波出现,在给AI提供了未观测到伪谐波出现的信息后,AI又给出了一个版本,它这次在我的提示下,引入了测量可能产生的相位差和随机噪声:

% 产生一个包含1000Hz、2000Hz、3000Hz三个正弦波信号的复合信号
Fs = 8000;
f1 = 1000;
f2 = 2000;
f3 = 3000;
t = 0:1/Fs:0.01;
signal = sin(2*pi*f1*t) + 0.7*sin(2*pi*f2*t) + 0.5*sin(2*pi*f3*t);

% 对信号进行FFT分析
signal_fft = fft(signal);
signal_fft = abs(signal_fft(1:round(length(signal_fft)/2)+1)); % keep only the first half of the spectrum
signal_fft(2:end-1) = 2*signal_fft(2:end-1); % double the magnitude to account for the other half of the spectrum
f_axis = 0:Fs/length(signal):Fs/2;

figure(1)
subplot(3,1,1)
plot(t,signal)
xlabel('Time (s)')
ylabel('Amplitude')
title('Original Signal')

subplot(3,1,2)
plot(f_axis,signal_fft)
xlabel('Frequency (Hz)')
ylabel('Magnitude')
title('FFT of Original Signal')

% 模拟采样偏移和随机干扰
rand_offset = randi(round(Fs/200), length(signal), 1)-round(Fs/400); % random offset between -2-Fs/400 and 2+Fs/400
perturbation = randn(length(signal), 1) .* exp(-10*sin(2*pi*linspace(0,1,length(signal))')); % random perturbation
delayed_signal = circshift(signal,rand_offset) + perturbation; % add sample delay and noise to the signal

% 对采样后的信号进行FFT分析
delayed_fft = fft(delayed_signal);
delayed_fft = abs(delayed_fft(1:round(length(delayed_fft)/2)+1));
delayed_fft(2:end-1) = 2*delayed_fft(2:end-1);
f_axis = 0:Fs/length(delayed_signal):Fs/2;

subplot(3,1,3)
plot(f_axis,delayed_fft)
xlabel('Frequency (Hz)')
ylabel('Magnitude')
title('FFT of Sampled Signal with Perturbation')

看起来,像模像样,甚至还是一屏3图的模式,但这一次的代码甚至有错误:

  1. 序列出现了+-1的错误。无法编译通过。
  2. 引入的随机噪声极不妥当,噪声某些点位能比信号本身强几百倍。
  3. 纠正完这些错误后,伪谐波仍然没有出现:
  4. 那个circ的用法,我不确定是否适合。

下面是结果,依然没有伪谐波出现:

 这个时候,就不要企图从AI哪里得到更多信息了。它尽力了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/626449.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RTP介绍

一、简介 Real-time Transport Protocol(实时传输协议) 具体参考rfc3350介绍 可负载H264、H265、G711A、AAC、PS、私有流等各种数据。 二、格式 RTP 固定头部格式如下 version (V): 2bits RTP协议版本号 目前协议版本为2 padding (P): 1bit 填充位 设置成1&#xff…

无线led显示屏的优势

无线LED显示屏是一种利用无线技术进行数据传输和控制的LED显示屏,相比传统有线连接的LED显示屏,具有以下优势: 灵活性和便捷性:无线LED显示屏无需使用复杂的有线连接,可以通过无线网络进行数据传输和控制。这使得安装和…

Linux内核中内存管理相关配置项的详细解析1

本文基于kernel 6.1.0,针对于“Linux/x86 6.1.0 Kernel Configuration”中的“Memory Management options”项下的各个子配置项(如下图所示)进行详细解析。 一、Support for paging of anonymous memory (swap) 这个选项以前位于“General S…

deepin 安装 MySQL

1.下载网址:MySQL :: Begin Your Downloadhttps://dev.mysql.com/downloads/file/?id519241 不用注册,直接下载 2. 打开下载文件:mysql ......deb 文件 3 选择步骤:选ubuntu bionic 4 ->MySQL Server&Cluster->mysq…

钢铁废水除氟

钢铁工业废水含多种污染物,包括大量的挥发酚、氟化物、石油类、悬浮物、砷、铅等有害物质。其中含氟工业废水的大量排放,不仅污染环境,还会危害到农作物和牲畜的生长发育,并且可以通过食物链影响到人体健康。所以对含氟废水需降氟…

去掉字符串中的空格,通过正则根据不同的需求分别能去掉前、后、前后、中间的空格。

正则小tips: 正则表达式 - 修饰符 gglobal - 全局匹配 正则表达式 - 元字符 ^匹配输入字符串的开始位置。*匹配前面的子表达式零次或多次。$匹配输入字符串的结束位置。\s 匹配任何空白字符,包括空格、制表符、换页符等等。 匹配前面的子表达式一次…

【计算机组成与体系结构Ⅰ】章节测试(5-7)

在CPU中跟踪指令后继地址的寄存器是___。 A 主存地址寄存器 B 程序计数器 (我的答案) C 指令寄存器 D 状态条件寄存器 下面描述的RISC机器基本概念中,正确的表述是 __。 A. RISC机器不一定是流水CPU. B. RISC机器一定是流水CPU. &#…

基于Tensorflow+SDD+Python人脸口罩识别系统(深度学习)含全部工程源码及模型+视频演示+图片数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境Anaconda 环境搭建 模块实现1. 数据预处理2. 模型构建及算法实现3. 模型生成 系统测试1. 训练准确率2. 运行结果 工程源代码下载其它资料下载 前言 在当今全球范围内,新冠疫情对我们的生活方式带来了…

单核 CPU 支持 Java 多线程吗?我们来一起看看吧

1 前言 由于现在大多计算机都是多核CPU,多线程往往会比单线程更快,更能够提高并发,但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁,你的程序反而不能支持更高的TPS。 2 时间…

超图使用问题汇总

超图使用问题汇总 切地图栅格瓦片的时候,必须确认生成地图的源数据坐标系已经被识别,否则无法进行全球剖分 下图就是未识别坐标系的情况 切地图矢量瓦片的时候,需要使用idesktopx来切,idesktop无法生成矢量瓦片。 矢量瓦片切片时…

Ubuntu安装docker-compose

官网 Install Compose standalone curl -SL https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose离线 下载文件 开启vpn浏览器https://github.com/docker/compose/releases/download/v2.18.1/dock…

第九篇:强化学习Q-learning算法 通俗介绍

你好,我是郭震(zhenguo) 今天介绍强化学习第九篇:Q-learning算法 前面我们介绍强化学习基本概念,马尔科夫决策过程,策略迭代和值迭代,这些组成强化学习的基础。 从今天开始逐步介绍常用强化学习算法&#x…

QT调用linux外部命令或者shell script

目录 原文链接:https://blog.csdn.net/YMGogre/article/details/128973098 0、本文使用的环境配置: 1、新建一个简单的Shell脚本: 2、在Qt中启动外部Shell脚本: 2.1、使用标准库中提供的方法 —— system() 2.2、使用Qt提供…

接口抓包分析与Mock实战

这里写目录标题 一、知识点梳理1、接口抓包需要具备的能力2、接口抓包原理 二、Charles 基础使用三、charles抓包分析四、Charles 使用1、过滤:Filter、Focus2、重发:Repeat、Repeat Advanced3、修改请求:Compose4、弱网:Throttle…

实验3 Tomasulo算法【计算机系统结构】

实验3 Tomasulo算法【计算机系统结构】 前言推荐实验3 Tomasulo算法1 实验目的2 实验平台3 实验内容和步骤4 实验总结与心得 最后 前言 2023-6-9 9:19:50 以下内容源自《【计算机系统结构】》 仅供学习交流使用 推荐 实验2 指令调度和延迟分支【计算机系统结构】 实验3 To…

webgpu之旅03

19854902 319854902 319854902 319854902 webgpu交Q流群我们找个例子看看别人的renderer three.js v152 首先init函数 看见中间有个对象 WebGPURenderPipelines 跟进去看看 这个构造函数里可以看见有这么些数据 get( renderObject ) {const device this.device;const cache …

Meetup 报名|06.17 StarRocks Friends 与你相约上海

StarRocks & Friends 是由 StarRocks 社区发起的城市线下 meetup,旨在联合社区与行业的专家小伙伴们分享基于 StarRocks 的最佳实践、大数据分析的前沿技术和 StarRocks 生态融合等热门话题。 不远千里奔赴,只为与你相聚。这个夏天,让我们…

Vue+springboot小区居民外出登记信息管理系统

系统采用更加便于维护和使用的JAVA语言,其可拓展性高且更富于表现力,方便基本信息、外出申请、健康信息、外来人员等功能。通过Spring Boot框架来进行网页编程,其方便易用、移植适用性广、更加安全可靠。数据库方面则选用的是体积小、速度快、…

【安装教程】Win10上安装Microsoft To-Do客户端(手机端)

这里写自定义目录标题 操作方法操作说明辅助疑难问题 操作方法 此方法是应用于微软商店无法安装、安装不成功等情况 操作说明 原文:手把手教你在Win10上安装Microsoft To-Do客户端:https://www.jianshu.com/p/32a1ea417cba 1.访问微软网站,找到To-Do的…

【深入浅出 Spring Security(七)】RememberMe的实现原理详讲

RememberMe 的实现原理 一、RememberMe 的基本使用二、RememberMeAuthenticationFilter 源码分析RememberMeServicesTokenBasedRememberMeServicesTokenBasedRememberMeServices 中对 processAutoLoginCookie 方法的实现总结原理图式 三、提高安全性PersistentTokenBasedRememb…