ChatGPT +MATLAB ,实现又快又好编程

文摘   科学   2024-07-17 21:31   上海  

科 / 研 / 图 / 像 / 处 / 理


ChatGPT 是一个由 OpenAI 训练的大型语言模型,可以进行对话、文本生成、问答等多种任务。它使用了 Transformer 架构,能够从大量语料中学习语言特征。



ChatGPT 在编程领域的应用


ChatGPT 可以在编程领域有多种应用,其中一些主要的应用如下:



  1. 代码生成:可以根据输入的需求或描述生成相应的代码。
  2. 代码提示:可以根据用户输入的代码片段,提供相应的代码提示和补全。
  3. 故障诊断:可以利用 ChatGPT 分析错误日志并给出相应的解决方案。
  4. 文档生成:可以根据输入的代码生成相应的文档。
  5. 自动测试:可以根据输入的代码生成相应的单元测试。
  6. 数据科学:可以使用 ChatGPT 来自动生成模型和数据集的描述。



不过需要注意的是, ChatGPT 是一个非常强大的语言模型,但它并不是万能的,在生成代码的场景下还需要人工编程和检查。


ChatGPT 是一个语言模型,它不能直接编写代码,但可以根据输入的需求或描述生成相应的代码。 

ChatGPT 是一个通用语言模型,能够学习任何语言。所以它可以支持许多编程语言,包括但不限于:JavaScript, Python, C++, C#, Java, Ruby, PHP, R, Swift 等。

需要注意的是,ChatGPT 的能力取决于它所学习的语料,如果语料中没有某种语言的代码,那么 ChatGPT 就不能生成这种语言的代码。

这篇文章会介绍怎样利用 ChatGPT 生成 MATLAB 的代码,实现基于 ChatGPT 的快速编程。


基于 ChatGPT 快速编程

ChatGPT在编程领域的应用
ChatGPT在编程领域的应用


打开 ChatGPT 网站


怎么能使用 ChatGPT ,确实是一个难题,需要两个条件:
  1. 会用除了香港外的全局代理
  2. 会使用接码
大家自行搜索吧。

ChatGPT界面如下:



二 


用英文描绘问题


虽然 ChatGPT 支持中文,但个人经验觉得用 英文描述,ChatGPT 更能明白你的意思

这里举一个例子,如果我想让 ChatGPT 生成一个,基于MATLAB的,对图片进行 DoG filter 的函数,可以这么说:


这里我直接用的 DoG 来代指 Difference of Gaussians,ChatGPT 照样是可以理解的。

这是ChatGPT给出的代码:


代码:
function filtered_image = dog_filter(image, sigma1, sigma2)    % convert image to grayscale    image_gray = rgb2gray(image);        % apply Gaussian filter with sigma1    g1 = fspecial('gaussian', [5 5], sigma1);    filtered1 = imfilter(image_gray, g1, 'same');        % apply Gaussian filter with sigma2    g2 = fspecial('gaussian', [5 5], sigma2);    filtered2 = imfilter(image_gray, g2, 'same');        % subtract filtered2 from filtered1 to get DoG filter result    filtered_image = filtered1 - filtered2;end

这里 ChatGPT 对于变量的命名以及注释都是值得学习的,同时 ChatGPT 还给出了这个函数的使用案例和说明:



三 


细化描述,让 ChatGPT 优化代码


这里 ChatGPT 给出的函数,默认的 kernel 是 [5 5]
如果我们想把这个kernel变成函数里需要传入的变量,可以进一步添加描述。
因为 ChatGPT 有上下文的记忆,所以可以直接问:

这里会发现虽然 kernel 变成了可定义的变量,但 ChatGPT 默认这个 kernal 不是高斯的了。
我们可以进一步修正我们的描述:

还非常贴心的告诉我,这个filter有什么特点和作用:

修正后的代码:
function filtered_image = dog_filter(image, sigma1, sigma2, kernel_size)    % convert image to grayscale    image_gray = rgb2gray(image);        % apply Gaussian filter with sigma1    g1 = fspecial('gaussian', kernel_size, sigma1);    filtered1 = imfilter(image_gray, g1, 'same');        % apply Gaussian filter with sigma2    g2 = fspecial('gaussian', kernel_size, sigma2);    filtered2 = imfilter(image_gray, g2, 'same');        % subtract filtered2 from filtered1 to get DoG filter result    filtered_image = filtered1 - filtered2;end
样,我也尝试了用 ChatGPT 自动生成 ImageJ macro,在提出一些简单任务的时候,ChatGPT 表现是很好的。
例如生成一段 ImageJ macro,实现打开图片并二值化:


把for循环加在里面:


以上两段Macro都是可以运行的。但如果再复杂一点,给更多的限定条件,那么ChatGPT就会出错了:


这里错在getResult()函数,函数输入参数应该是:


ChatGPT 只选择对了”Column”,但row选错了。

所以 ChatGPT 暂时还不太能完成 ImageJ macro 的正确编写,但可以在它编写的Macro 基础上进行修改,这样同样省时省力。

最后:



感谢关注和支持,我们下期见~ 

作者 | Treasure琛
排版 | 小乐喵喵   


往/期/回/顾


ImageJ 基础篇 | 基于阈值分割的自动细胞计数 


ImageJ 基础篇 | 比例尺的校准与添加


ImageJ 基础篇 | 荧光强度测量



科研图像处理
科研图像处理一站式解决方案,原知乎《ImageJ实用教程》
 最新文章