8.1 switch-case判断语句+for循环+向量预分配的重要性
function letGrade = letterGrade(numGrade) if numGrade<0||numGrade>10 letGrade='X'; else switch numGrade case 10 %9,10的情况可以合成 case{10,9}等于其中的一个数字就执行语句 letGrade='A'; case 9 letGrade='A'; case 8 letGrade='B'; case 7 letGrade='C'; case 6 letGrade='D'; otherwise letGrade='F'; end end
循环语句
inputnum = NaN(10,1); %将输入的数字存储在向量中 for i = 1:10 inputnum(i)=input('Enter a number: '); end
执行语句,输入1234567890,输入
计算随机输入的数字的和
runsum=42
计算随机输入整数的积runprod
matlab在想将数字一个个存储时效率是很低的,它要多次找新的位置将原存储的熟悉考下来,将原名字抹掉,在新位置起新的名字。当向量非常长的时候,效率就非常低了。所以要向量预分配。
可以写inputnum = NuN(n,1);预先分配空间
8.2 用for循环绘图+subplot多重坐标系+for循环嵌套(上)
n=2; for i=1:2 x=linspace(0,2*pi,20*i);%20*i是点的个数 y=sin(x); subplot(1,n,i); plot(x,y,'ko-'); xlabel('x'); ylabel('sin(x)'); title('x-y'); end
subplot解释
subplot(2,2,[2,4])可以换成(1,2,2)意思是1行2列的第二块
figure(2);clf; n=3; for i=1:n x=0:0.01:1; y=exp(2^i*x); plot(x,y,'LineWidth',5,'DisplayName',['exp(2^' num2str(i) 'x)']);%线的粗细,线的宽度是5;线的名称,num2str(i)意思是将双精度转换成char变量,用[]将所有的整合起来 hold on; end xlabel('x'); ylabel('exp(2^i*x)'); title('x-y'); %legend('exp(2^1*x)','exp(2^1*x)','exp(2^3*x)'); legend('show');
以上代码执行得到以下图像:
打印出3行5列的*