我已经完成了这个程序,但是我的讲师希望它更简单..我试图改变命令,但它出错了...可以请帮助我......给一些线索或者其他......我真的很感激,如果你可以帮助我..这是问题,下面是命令..根据用户自己的选择,通过MATLAB编程确定两个向量的最高,最低和平均值..
close all
clear all
clc
disp('Welcome to my program.');
disp(' ');
disp('instruction:');
disp(' a ) Enter the number of column of a vector.');
disp(' b ) Next, enter the element for vector A and vector B.');
disp(' c ) Then, select your option of what do you want to find.');
disp(' ');
column = input (' Enter the number of column of a vector: ');
disp(' ')
disp(' Enter the element for vector A ');
for count=1:column
disp(['A (',num2str(count), ')=']);
A(count)=input(' ');
end
disp(' ')
disp(' Enter the element for vector B');
for count=1:column
disp(['B(',num2str(count),')=']);
B(count)=input(' ');
end
disp(' ')
disp(['Vector A is [',num2str(A),')']);
disp(['Vector B is [',num2str(B),')']);
disp(' ')
disp('What do you want to find?');
disp(' ')
disp('1-find the highest value');
disp('2-find the lowest value');
disp('3-find the average value');
choose=input('Choose:');
disp(' ')
while choose >3
disp('Sorry, please enter the right input!');
choose=input('choose:');
end
disp('Your result:')
disp(' ')
fprintf('number of column:%2.0f\n',column);
disp(['vector A:[',num2str(A),']']);
disp(['vector B:[',num2str(B),']']);
if choose ==1
disp('choice: find the highest value');
elseif choose==2
disp('choice: find the lowest value');
elseif choose==3
disp('choice: find the average value');
end
switch choose
case 1
A = max(A);
B = max(B);
result=max(A,B);
case 2
A = min (A);
B = min (B);
result=min(A,B);
case 3
A = mean (A);
B = mean (B);
end
disp(['Vector A:',num2str(A)]);
disp(['Vector B:',num2str(B)]);
if choose==1
disp(['the highest value: ',num2str(result),'']);
else if choose==2
disp(['the lowest value:',num2str(result),'']);
end
end
答案 0 :(得分:3)
我建议做一些改动:
答案 1 :(得分:3)
我会选择这样的东西:
function out = mergevectors(x,y,method)
%MERGEVECTORS Determine max, min, or mean value
% MERGEVECTORS(X, Y, 'CHOICE') determines basic statistics between two
% vectors. X and Y are any identically sized vectors. 'METHOD' is one
% of: 'max','min','mean'.
%
%Examples:
% x = [1 2 3 4];
% y = [4 3 2 1];
% mergevectors(x, y,'max')
% mergevectors(x, y,'min')
% mergevectors(x, y,'mean')
%Error handling
error(nargchk(3,3,nargin));
if ~isequal(size(x), size(y))
error('X and Y must be identically sized')
end
if ~ischar(method)
error('Method must be one of ''max'', ''min'', ''mean''');
end
%Processing
switch lower(method)
case 'max'
out = max(x, y);
case 'min'
out = min(x, y);
case 'mean'
out = (x + y)/2;
otherwise
error('Method must be one of ''max'', ''min'', ''mean''');
end
一些自我放纵的评论:
请避免使用以下语句:全部清除;全部关闭; CLC;我理解为什么有这么多人这样做,但如果我使用你的工具,我有可能在我的工作区中有一些我想保留的东西。不需要此声明。如果您担心工作区中的杂散变量,function
关键字可以正常工作。
通过在向量中键入的长途方法,无需引导用户。 Matlab命令窗口已经附带了适合输入矢量的工具。 (例如[
和]
)。
一般来说,错误消息应该是完全中立的。没有“!”的。任何错误至少是程序员的错误的一半,他们找不到使用所提供的输入的方法,或者提供更好的文档。
在提供的解决方案中,初始注释块用作文档,用户可通过help mergevectors
使用。但是,一旦用户成为专家用户,就不再需要文档,也不会介入。
尽可能避免使用input
等交互式输入。 (也就是说,总是避免交互式输入。)编写一个有用的功能的全部意义在于,您(或其他人)可以在忘记它的工作原理后很好地使用它,并且您可以使用它来构建更好,更高级的功能功能。您很少希望通过不断的输入请求来减慢此过程。
对于这个学习示例,这一点可能并不明显,但如果您要编写复杂的代码片段(无论语言如何),这都是需要记住的一点。
答案 2 :(得分:2)
考虑如何构建MATLAB的内置函数。用户只需通过传递附加参数来选择案例。用户可以通过调用“help yourfunctionname”来请求函数调用下面的一组注释,而不是通过显示提示用户
非常粗暴地说,你应该写一个看起来像这样的函数:
function f = yourfunction(A,B,i)
%A and B are input vectors
%i = 1 for max, i = 2 for min, i = 3 for mean
'the rest of your code'