深夜调教OpenAI写一个Matlab生成随机颜色的代码

4.7
(3)

最近打算给网站文章的缩略图换个思路,变成纯色背景外加一个图标,这时候你会发现选颜色很难。那么,我们就需要生成一个随机颜色,这里我想到了Matlab,毕竟我电脑上就这么一个编程软件。所以,就有了本文的主题。用Matlab生成一个随机颜色的代码,我又不是特别懂,就只能请教OpenAI了。

知识问答序言

由于,我懒得挂代理,所以我就直接在我自己网站的知识问答板块跟OpenAI聊起来了。知识问答跟OpenAI官方ChatGPT的区别就在于,我没设置连续聊天,所以就只能解决一个问题以后接着开新问答继续完成未解决的问题。那么,下面就开始介绍下整个聊天过程,也让各位更加了解我的知识问答具体使用方法。

深夜调教OpenAI写一个Matlab生成随机颜色的代码

初次生成代码

我上来直接抛给OpenAI一个问题,让它解答,详情如下:

古哥:

Matlab随机生成颜色的代码
帮我写一个Matlab随机生成颜色的代码,需要每行代码都要有注释,分别给出RGB颜色值和16进制颜色值。

OpenAI:

% 生成随机颜色
r = rand(1); % 生成一个[0,1]的随机数,代表R颜色分量
g = rand(1); % 生成一个[0,1]的随机数,代表G颜色分量
b = rand(1); % 生成一个[0,1]的随机数,代表B颜色分量

% 将RGB颜色值转换成16进制颜色值
hex = rgb2hex([r,g,b]);

% 显示生成的颜色
fprintf('RGB颜色值为: (%f, %f, %f)n', r, g, b);
fprintf('16进制颜色值为: %sn', hex);

% rgb2hex函数的实现
function hex = rgb2hex(rgb)
 hex = string(reshape(dec2hex(round(rgb*255), 2), [], 1));
 hex = join(hex,'');
end

经过验证上述代码无法使用,问答详情可参考:《Matlab随机生成颜色的代码》。

深夜调教OpenAI写一个Matlab生成随机颜色的代码

接着,我就该自己写了

OpenAI多次提问

首先,我知道生成一个颜色代码的大概逻辑,那就是三个0-255之前的数字,就可以组成一个颜色代码。所以,我可以使用rand(1,3)生成三个0到1的随机数。然后再用255乘以这三个随机数,就得到了三个0-255的数字。大概的程序代码如下:

clc
clear

%生成三个随机0-1的数字
num = rand(1,3)

%转换为三个0-255的数字
rgb = 255*num

但是这样就有一个问题,出来的结果可能带有小数,比如如下结果:

num =

    0.5472    0.1386    0.1493


rgb =

  139.5400   35.3492   38.0700

所以,接着问OpenAI如何取整,懒得百度了。

古哥:

Matlab取整代码怎么写
比如,12.1要变成12,12.6要变成13

OpenAI:

a = 12.1;
b = 12.6;
a_round = round(a); % a_round = 12
b_round = round(b); % b_round = 13

当然,OpenAI回答了很多方法,我挑了个适合我的方法,问答详情可以参考:《Matlab取整代码怎么写》。

到此,代码变成了如下内容:

clc
clear
num=rand(1,3)
rgb=round(255*num)

输出结果如下:

num =

    0.2575    0.8407    0.2543


rgb =

    66   214    65
深夜调教OpenAI写一个Matlab生成随机颜色的代码

其实这已经是一个完整的颜色代码了,但有时我们又需要16进制的颜色代码,比如CSS中使用的代码就会是#ffffff类似这种情况。接着,我又得去问一下OpenAI。

古哥:

Matlab十进制如何转换成十六进制
帮我写一下代码

OpenAI:

dec_num = 255; % 设置十进制数值
hex_num = dec2hex(dec_num); % 转换为十六进制
disp(hex_num) % 输出结果

详细的问答过程可以参考:《Matlab十进制如何转换成十六进制》。

目前的代码及输出结果如下:

clc
clear
num=rand(1,3);
rgb=round(255*num)
rgb_16=dec2hex(rgb)

rgb =

   212   149   140


rgb_16 =

D4
95
8C
深夜调教OpenAI写一个Matlab生成随机颜色的代码

相信你也看出来了,这个十六进制代码,我复制起来很费劲。我们需要把它变成一行,方便复制,所以又有了如下对话

古哥:

Matlab dec2hex用法举例
我在使用dec2hex函数将173 167 41转换为16进制后,需要将结果变成一个字符串,可以在结果直接复制的,而不是给我变成三列输出

OpenAI:

hexStr = dec2hex([173 167 41], 2);
hexStr = reshape(hexStr', 1, []);

到此,我们的代码及输出结果变成了如下内容:

clc
clear
num=rand(1,3);
rgb=round(255*num)
hexStr = dec2hex(rgb, 2);
hexStr = reshape(hexStr', 1, [])

rgb =

   234    73   193


hexStr =

EA49C1

详细的问答详情可以参考:《Matlab dec2hex用法举例》。

目前使用起来确实方便了很多,但是如果我们要用到CSS里,还需要自己加一个#才行,接着去问OpenAI就行了。

古哥:

Matlab如何将现有字符前面再加个字符
比如,我的目前代码为:hexStr = dec2hex([173 167 41], 2); hexStr = reshape(hexStr’, 1, []); 它输出了一个颜色值,我需要在结果前面加一个#,我就可以直接复制使用了。

OpenAI:

hexStr = dec2hex([173 167 41], 2);
hexStr = reshape(hexStr', 1, []);
hexStr = ['#' hexStr]; %添加#字符
disp(hexStr);

详细的问答详情可以参考:《Matlab如何将现有字符前面再加个字符》。

最终完整代码

最终生成了我们需要的代码,详细完整的Matlab随机颜色代码及其输出结果如下:

clc
clear
num=rand(1,3);
rgb=round(255*num)
hexStr = dec2hex(rgb, 2);
hexStr = reshape(hexStr', 1, []);
hexStr = ['#' hexStr]; %添加#字符
disp(hexStr)

rgb =

    19    14   135

#130E87
深夜调教OpenAI写一个Matlab生成随机颜色的代码

到此,我们就可以使用这个随机颜色代码了。本文重点是向你介绍一下如何跟OpenAI一步一步的聊下去,你需要知道的是我用OpenAI甚至写了一个自动问答插件。也就是说,本站目前使用的自动问答功能,都是OpenAI写的。总之,你只需一步一步的对OpenAI提需求,它可以完成很多事。当然,它也有很白痴的时候,需要你自己可以判断并加以引导。

共计3人评分,平均4.7

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

文章目录

原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/5487.html

(0)
微信公众号
古哥的头像古哥管理团队
上一篇 2023年04月07日 23:38
下一篇 2023年04月08日 22:45

你可能感兴趣的文章

发表回复

登录后才能评论
微信小程序
微信公众号