How can i create a standard matlab template for new programs

조회 수: 35 (최근 30일)
DoVile Last Name:
DoVile Last Name: 2012년 12월 15일
편집: Sayyed Ahmad 2018년 6월 18일
I like to have the same layout of my code every time i create a new program, at the moment i just copy and paste an .m file. But is there any way it start with the following comments and code each time i make a new file matlab file ?
%
% Description:
%
% Author: Thor P. Nielsen
%
% Date: XX-XX-20XX
%
% Comment:
%
% Tests run:
clear; close; clc
ps. if you have any suggestions for more "stuff" i could/should include in every programme please let me know :)
  댓글 수: 1
Sayyed Ahmad
Sayyed Ahmad 2018년 6월 18일
편집: Sayyed Ahmad 2018년 6월 18일
I creat some function which is called: CLASS_Template.m and used some KEY_CLASSNAME as a key in this template.
{
%codes of CLASS_Template:
classdef test
properties (SetAccess='public', GetAccess='public')
prop;
end
properties (SetAccess='private', GetAccess='public')
end
properties(SetAccess='private', GetAccess='private')
end
methods
function o=test(varargin)
switch nargin
case 1
o.prop = varargin{1};
otherwise
error('the number of input proprties doesn''t macht.')
end
end
function display(o)
disp('<a href="matlab: helpwin test">test properties:</a>')
disp(o.prop);
end
function disp(o)
display(o)
end
function help(o)
helpwin test
end
end
end
}
in the second file called CreateClass would the Key replaced with the className.
{
function CreateClass(varargin)
classname = varargin{1};
dirname = ['@' classname];
str_date=datestr(date,'dd.mmm.yyyy');
[status,message,messageid]=mkdir(dirname);
pause(1);
fid = fopen('/Path_to_Template/CLASS_Template.m');
F = fread(fid, '*char')';
fclose(fid);
F=strrep(F, 'KEY_CLASSNAME', classname);
F=strrep(F, 'KEY_DATE', str_date);
cd([pwd '\' dirname]);
fid = fopen([classname '.m'], 'w');
fwrite(fid, F);
fclose(fid);
open([classname '.m'])
end
}
Now you can run the following command
{
>>CreateClass test
}
Depending on your needs you could have more than one key.
I hope you have your answer.
cheers! Ahmad

댓글을 달려면 로그인하십시오.

채택된 답변

Matt Fig
Matt Fig 2012년 12월 15일
편집: Matt Fig 2012년 12월 15일
You could put that code in an m-file then use COPYFILE to copy it to a new m-file, including the intended name.
Say your above template is saved as func_template.m and you want to make a new function named myfunc.m. Save this:
function [] = make_fun(V)
copyfile('func_template.m',V)
edit(V)
Then from the command line:
>> make_fun('myfunc.m')
  댓글 수: 4
Matt Fig
Matt Fig 2012년 12월 15일
편집: Matt Fig 2012년 12월 15일
In it's own function m-file. In other words, type:
edit
then when the new window pops up, paste in only that code and save it. So basically you will have the template file and the above, seperate file that copies the template to a new file whenever you want.
DoVile Last Name:
DoVile Last Name: 2012년 12월 15일
Thank you Matt, works perfectly!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Image Analyst
Image Analyst 2012년 12월 15일
Here are some lines of code that you might consider putting at the top of your test scripts. Pick and choose which you want:
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
imtool close all; % Close all imtool figures if you have the Image Processing Toolbox.
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format longg;
format compact;
% Change the current folder to the folder of this m-file.
if(~isdeployed)
cd(fileparts(which(mfilename)));
end
% Check that user has the Image Processing Toolbox installed.
hasIPT = license('test', 'image_toolbox');
if ~hasIPT
% User does not have the toolbox installed.
message = sprintf('Sorry, but you do not seem to have the Image Processing Toolbox.\nDo you want to try to continue anyway?');
reply = questdlg(message, 'Toolbox missing', 'Yes', 'No', 'Yes');
if strcmpi(reply, 'No')
% User said No, so exit.
return;
end
end
  댓글 수: 1
Richard Crozier
Richard Crozier 2018년 4월 23일
편집: Richard Crozier 2018년 4월 23일
Don't ever put clear or clc at the top of your test scripts. You'll regret it some day (or someone you work with will regret it). If you need a clean workspace, put the test in a function.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Get Started with MATLAB에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by