Matlab代码检查器
Matlab code checker
我正在为学生做一个程序。他们可以在matlab程序中加载他们的matlab代码,程序应该执行学生的代码并检查输出是否正确,如果不正确,程序必须指出错误的行代码。所以我认为这是一种元编程。现在我正在尝试使用 eval() 函数来将输入文本作为代码执行,但我不知道这是否是个好主意。此外,我在维护工作区中的变量时遇到问题,因为当我从一种方法更改为另一种方法时,工作区变量被重置,所以我正在考虑解决这个问题,将工作区保存并加载到文件中,但也许你可以提出其他更好的想法。
现在,我们已经预定义了学生必须解决的练习,程序的输出总是一张或几张图像,因为这是用于图像处理的 class。这里有一个代码示例:
X=double(LENNA_G);
Y=medfilt2(X,[7 7]);
ps=psnr(Y,X,255);
disp(sprintf('%f[dB]',ps));
subplot(1,3,1);
imagesc(X,[0 255]);
colormap(gray(256))
axis image
subplot(1,3,2);
imagesc(Y,[0 255]);
axis image
subplot(1,3,3);
imagesc(X-Y,[-10 10]);
axis image
执行代码后,将生成的图像与正确的图像(预定义图像)进行比较,并且必须相同。如果不是,则程序必须至少指出可能出现错误的代码行。不知道我说的对不对=/.
提前致谢。
根据评论,我会提出这个解决方案。向您的学生分发模板:
function solution=exercise1(image1,image2)
%A) extract the r, g and b channel from the imag1e
solution.a.r=nan;
solution.a.g=nan;
solution.a.b=nan;
%B) convert the image2 to greyscale
solution.b=nan;
end
然后你可以调用函数exercise1,逐个字段比较,你需要的只是一个结构体的递归比较,输出不同的字段名。您也可以提供脚本模板而不是函数模板,但是您的学生必须为他们的函数创建单独的文件。这样可以在同一个文件中创建函数,使它们保持私有并避免命名空间冲突。
我正在为学生做一个程序。他们可以在matlab程序中加载他们的matlab代码,程序应该执行学生的代码并检查输出是否正确,如果不正确,程序必须指出错误的行代码。所以我认为这是一种元编程。现在我正在尝试使用 eval() 函数来将输入文本作为代码执行,但我不知道这是否是个好主意。此外,我在维护工作区中的变量时遇到问题,因为当我从一种方法更改为另一种方法时,工作区变量被重置,所以我正在考虑解决这个问题,将工作区保存并加载到文件中,但也许你可以提出其他更好的想法。
现在,我们已经预定义了学生必须解决的练习,程序的输出总是一张或几张图像,因为这是用于图像处理的 class。这里有一个代码示例:
X=double(LENNA_G);
Y=medfilt2(X,[7 7]);
ps=psnr(Y,X,255);
disp(sprintf('%f[dB]',ps));
subplot(1,3,1);
imagesc(X,[0 255]);
colormap(gray(256))
axis image
subplot(1,3,2);
imagesc(Y,[0 255]);
axis image
subplot(1,3,3);
imagesc(X-Y,[-10 10]);
axis image
执行代码后,将生成的图像与正确的图像(预定义图像)进行比较,并且必须相同。如果不是,则程序必须至少指出可能出现错误的代码行。不知道我说的对不对=/.
提前致谢。
根据评论,我会提出这个解决方案。向您的学生分发模板:
function solution=exercise1(image1,image2)
%A) extract the r, g and b channel from the imag1e
solution.a.r=nan;
solution.a.g=nan;
solution.a.b=nan;
%B) convert the image2 to greyscale
solution.b=nan;
end
然后你可以调用函数exercise1,逐个字段比较,你需要的只是一个结构体的递归比较,输出不同的字段名。您也可以提供脚本模板而不是函数模板,但是您的学生必须为他们的函数创建单独的文件。这样可以在同一个文件中创建函数,使它们保持私有并避免命名空间冲突。