最近打算给网站文章的缩略图换个思路,变成纯色背景外加一个图标,这时候你会发现选颜色很难。那么,我们就需要生成一个随机颜色,这里我想到了Matlab,毕竟我电脑上就这么一个编程软件。所以,就有了本文的主题。用Matlab生成一个随机颜色的代码,我又不是特别懂,就只能请教OpenAI了。
知识问答序言
由于,我懒得挂代理,所以我就直接在我自己网站的知识问答板块跟OpenAI聊起来了。知识问答跟OpenAI官方ChatGPT的区别就在于,我没设置连续聊天,所以就只能解决一个问题以后接着开新问答继续完成未解决的问题。那么,下面就开始介绍下整个聊天过程,也让各位更加了解我的知识问答具体使用方法。
初次生成代码
我上来直接抛给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多次提问
首先,我知道生成一个颜色代码的大概逻辑,那就是三个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要变成13OpenAI:
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
其实这已经是一个完整的颜色代码了,但有时我们又需要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
相信你也看出来了,这个十六进制代码,我复制起来很费劲。我们需要把它变成一行,方便复制,所以又有了如下对话
古哥:
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一步一步的聊下去,你需要知道的是我用OpenAI甚至写了一个自动问答插件。也就是说,本站目前使用的自动问答功能,都是OpenAI写的。总之,你只需一步一步的对OpenAI提需求,它可以完成很多事。当然,它也有很白痴的时候,需要你自己可以判断并加以引导。
原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/5487.html