本文用科研软件matlab考察chatgpt的编程能力。
////////////////////////////////////////////////////////////////
需求:从excel里不断更新的'sheet'表每60秒读取最新的一行数据,用matlab脚本编程
需求说明:‘最新的一行数据’说的比较含糊,单一语句比较长
chatgpt秒答题——
以下是一个示例脚本,可以实现从特定Excel文件的特定sheet中读取最新的一行数据:
```matlab
% 定义Excel文件路径和sheet名称
excelFile = 'C:\path\to\your\file.xlsx';
sheetName = 'sheet';
% 设置读取数据的起始行和列
readRow = 1; % 从第1行开始读取(假设第1行是数据)
readColum = 'I'; % 读取到I列(假设j列是无数据)
% 循环读取数据
while true
% 打开Excel文件
[~, ~, raw] = xlsread(excelFile, sheetName);
% 获取表格行数
numRows = size(raw, 1);
% 如果有新数据,则读取最新一行
if numRows > readRow
% 获取最新一行数据
newRow = raw(numRows, 1:readColumn);
% 在这里写下你的数据处理代码,比如:
fprintf('读取到最新数据:%s\n', strjoin(newRow, ', '));
end
% 等待1小时再读取下一行数据
pause(3600);
end
```
需要注意的是,该脚本会不断循环读取数据,直到手动停止程序运行。此外,如果Excel文件中的数据格式发生变化,可能需要调整代码以适应新的数据结构。
运行脚本报错:
“Error using :
For colon operator with char operands, first and last operands must be char.
Error in read_excel
newRow = raw(numRows, 1:readColumn);”
此句代码也不对: fprintf('读取到最新数据:%s\n', strjoin(newRow, ', '));
修改一下运行成功:
% 定义Excel文件路径和sheet名称
excelFile = 'input.xlsx';
sheetName = 'sheet';
% 设置读取数据的起始行和列
readRow = 1; % 从第1行开始读取
readColumn = 'I'; % 读取到I列
% 循环读取数据
while true
% 打开Excel文件
raw= readtable(excelFile);
% 获取表格行数
numRows = size(raw, 1);
disp(numRows);
% 如果有新数据,则读取最新一行
if numRows > readRow
% 获取最新一行数据
newRow = raw(numRows,:);
% 在这里写下你的数据处理代码,比如:
disp(newRow);
end
% 等待1小时再读取下一行数据
pause(60);
end
上述代码说明了chatgpt的代码改一改能用
/////////////////////////////////////////////////////

需求:用matlab的timer写与前面的需求相同的功能
说明:考察一下chatgpt的上下文理解
chatgpt秒答——
以下是用MATLAB的timer实现与前面需求相同的功能的示例代码:
% 设置定时器
t = timer;
t.ExecutionMode = 'fixedRate';
t.Period = 1; % 每隔1秒执行一次
t.TimerFcn = @aTimerFcn;
% 启动定时器
start(t);
% 定时器回调函数
function aTimerFcn(~, ~)
% 在此处编写与前面需求相同的代码
% 停止定时器
stop(t);
在上面的代码中,首先创建了一个timer对象,并设置了其执行模式为fixedRate,表示定时器会按照固定的频率执行,每隔1秒执行一次。然后,将aTimerFcn函数设置为定时器的回调函数,即每次定时器执行时都会调用aTimerFcn函数。
在aTimerFcn函数中,可以编写与前面需求相同的代码,例如读取温度传感器的数据,并将数据保存到文件中。
通过调用start(t)来启动定时器,通过调用stop(t)来停止定时器。
运行肯定报错
写的代码逻辑有问题
问题在"function aTimerFcn(~, ~) % 在此处编写与前面需求相同的代码"。
上述代码说明了chatgpt逻辑能力一般
////////////////////////////////////////////////////////////////

需求:从excel里的'sheet'表读取第一行数据,'sheet'表的数据每60秒更新一次,请每60秒读取最近更新的数据的第一行,写入另外一个excel文件,用matlab的timer编程
需求说明:描述、用语相对精准
chatgpt秒答——
以下是一个基本的MATLAB程序,可以实现你所需的功能。
```matlab
% 创建一个定时器对象,每60秒触发一次
t = timer('Period', 60, 'ExecutionMode', 'fixedRate', 'TimerFcn', @readAndUpdateExcel);
% 启动定时器
start(t);
function readAndUpdateExcel(~,~)
% 读取最近更新的数据的第一行
data = xlsread('filename.xlsx', 'sheet', 'A1:A1');
% 将数据写入另外一个excel文件
xlswrite('new_filename.xlsx', data, 'sheet', 'A1');
end
```
上述代码不能拿来用
chatgpt被问懵了
////////////////////////////////////////////////
问chatgpt类似的问题,chatgpt会用不同的方法回答,完成度一般。
说chatgpt不对,它还会礼貌地道歉。
综上所述,chatgpt理解业务需求的能力一般,还不能替代哪怕普通的程序员,但是当程序员的助理不错,能帮助其提高工作效率。