将(命令行?)参数传递给Matlab脚本
问题描述:
只是一个非常快速的问题。将(命令行?)参数传递给Matlab脚本
我已经给过这个文件,我想运行它。
我相信它需要命令行参数与function trees_main(puzzle_ind,print_f,nls)
功能,但我不知道。它是几个不同文件的一部分 - 但这是主控制器。
关于如何传递函数一些参数的任何想法?它是否在运行时完成?
% A* search tree algorithm for solving 8 puzzle problem
% Inputs:
% puzzle_ind = 1:30
% print_f = 0/1, 1 to show the step solutions
% nls = 0/1, 1 to Nilsson Score
% Calls:
% trees (A* search)
% trees_gm (Generate moves)
% trees_mh (Manhattan metrics)
% trees_nls (Nilsson sequence)
% Uses:
% combinations.mat (30 resolvable puzzle combinations)
%
function trees_main(puzzle_ind,print_f,nls)
global Tg T0 T1 nls_f % These variables are visible in all functions
nls_f = nls;
Tg = [1 2 3; 8 0 4; 7 6 5]; % Goal sequence
% Coordinates (row and column) of tiles in a puzzle
T0 = [1 1; 1 2; 1 3; 2 1; 2 2; 2 3; 3 1; 3 2; 3 3];
T1 = [1 2 3 8 0 4 7 6 5];
load combinations Cmb
if puzzle_ind >= 1 && puzzle_ind <= 30
P = Cmb{puzzle_ind}; % assign the Puzzle
[T,n1,n2] = trees(P,print_f); % call A* search function
fprintf('\nPuzzle:\n')
fprintf('% 1i %1i %1i\n',Cmb{puzzle_ind}')
fprintf('Solution:\n')
fprintf('% 1i %1i %1i\n',T')
fprintf('Number of nodes = %4i\nNumber of moves = %2i\n\n',n1,n2)
end
trees_plot(puzzle_ind); % statistics
return
function trees_plot(pind)
global N1 nls_f
M = (N1(:,[2 8])');
n = size(M,2);
plot(1:n,M)
xlabel('Number of Tested Nodes')
ylabel('Metrics (without cost)')
if nls_f == 0
s1 = 'No';
else
s1 = 'Yes';
end
title(sprintf('Puzzle Index %2i, NSS %s',pind,s1))
axis([1 n 0 max(M(1,:))+1])
grid on
text(5,15,'Level (Cost)')
return
感谢您的时间
答
如果你想运行此功能从MATLAB命令行trees_main(puzzle_ind,print_f,NLS),那么它应该被保存的文件名trees_main.m在你的matlab路径上。你可以使用addpath('some path')这个文件(trees_main.m)所在的位置。现在,你都准备从命令窗口调用。就像正常的函数调用一样。 例如,trees_main(15,1,1)。
您是否在网上搜索了这个? MATLAB有很棒的文档,这是一个非常基本的问题。 – Suever
请参阅:[函数基础知识](http://www.mathworks.com/help/matlab/function-basics.html) – excaza