MATLAB 编程实例课件

上传人:我*** 文档编号:143666890 上传时间:2020-09-01 格式:PPT 页数:22 大小:425KB
返回 下载 相关 举报
MATLAB 编程实例课件_第1页
第1页 / 共22页
MATLAB 编程实例课件_第2页
第2页 / 共22页
MATLAB 编程实例课件_第3页
第3页 / 共22页
MATLAB 编程实例课件_第4页
第4页 / 共22页
MATLAB 编程实例课件_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《MATLAB 编程实例课件》由会员分享,可在线阅读,更多相关《MATLAB 编程实例课件(22页珍藏版)》请在金锄头文库上搜索。

1、MATLAB 编程实例(I),1,MATLAB 编程实例(I),目录,求素数 计算税率 逆序存放数组 有序数组的插入 打印杨辉三角 打印矩阵的最小值 打印鞍点 求矩阵的所有K阶子式,MATLAB 编程实例(I),2,1. 求素数,输入一个数,判断它是否是素数,如果不是素数,则至少输出它的一个非1因子,MATLAB 编程实例(I),3,程序,% 求一个矩阵中的每个元素是否是奇数,相当于MATLAB的函数 isprime function res fctr= is_prime(n) res = ones(size(n); fctr = ones(size(n); for K=1:length(n(

2、:) cur_n = n(K); res(K) fctr(K) = is_a_prime(cur_n); end,% 判断单个数是否是奇数 function res fctr = is_a_prime(n) res = true; for I=2:floor(sqrt(n) if mod(n, I) = 0 fctr = I; res = false; return; end end,% 主程序 subplot(3, 1, 1); A=2:100; stem(A, A.*is_prime(A), .-) subplot(3, 1, 2); A=2:1000; stem(A, A.*is_pri

3、me(A), .-) subplot(3, 1, 3); A=2:5000; stem(A, A.*is_prime(A), .-),MATLAB 编程实例(I),4,结果,MATLAB 编程实例(I),5,2. 计算税率,MATLAB 编程实例(I),6,salary=linspace(0, 10000, 20); plot(salary, get_revenue(salary), x-); grid on; subplot(2, 1, 2); salary=linspace(10000, 200000, 20); plot(salary, get_revenue(salary), x-);

4、 grid on;,function revenues = get_revenue(salaries) revenues = ones(size(salaries); for I=1:length(salaries(:) revenues(I)=get_a_revenue(salaries(I); end,程序1,function revenue = get_a_revenue(salary) revenue = 0; if salary 1600 return; end % - 1600 2100 salary = salary - 1600; if salary (2100-1600) r

5、evenue = revenue + salary * 0.05; return; else revenue = revenue + (2100-1600)*0.05; end % - 2100 3600 salary = salary - (2100-1600); if salary (3600-2100) revenue = revenue + salary * 0.10; return; else revenue = revenue + (3600-2100)*0.10; end % - 3600 6600 % - 6600 21600 % - 21600 41600 % - 41600

6、 61600 % - 61600 81600 % - 81600 101600,% - 81600 101600 salary = salary - (81600-61600); if salary (101600-81600) revenue = revenue + salary * 0.40; return; else revenue = revenue + (101600-81600)*0.40; end % - 101600 inf salary = salary - (101600-81600); revenue = revenue + salary*0.45;,MATLAB 编程实

7、例(I),7,结果,MATLAB 编程实例(I),8,程序2:查表法,function revenues = get_a_revenue2(salary) revenues = 0; starts = -inf, 1600, 2100, 3600, 6600, 21600,41600,61600,81600,101600, inf; pre_fee = 0, 0, 25, 175, 625, 3625, 8625,14625,21625, 29625; rates = 0, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45; pre_I

8、= find(startssalary); I = pre_I(1)-1; if (I = 0) return; end revenues = pre_fee(I) + (salary - starts(I)*rates(I);,MATLAB 编程实例(I),9,3. 逆序存放数组,给定一个数组,将其逆序存放,如:将A = 1 2 3 4 5 6 7 9 100变成A = 100 9 7 6 5 4 3 2 1,MATLAB 编程实例(I),10,程序,A = 1:7 9 100 I=1; J=length(A); while IJ temp = A(I); A(I) = A(J); A(J)

9、 = temp; I = I+1; J = J-1; end A,MATLAB函数: rot90(rot90(A) 或 fliplr(A) %flipud,MATLAB 编程实例(I),11,4. 有序数组的插入,已知A为一有序向量(由小到大排列),试将B依次插入至A中,使得A仍然有序, 例如A = 1 3 4 5 9B = 2 6插入后A为A = 1 2 3 5 6 9,MATLAB 编程实例(I),12,程序,function A = insert1(A, n) A = A n; for I=length(A)-1:-1:1 if n A(I) A(I+1) = n; return; en

10、d A(I+1) = A(I); end A(I) = n;,function A = insert2(A, n) I = find(An); if (length(I) = 0) A = A n; return; end I = I(1); A = A(1:I-1) n A(I:length(A);,MATLAB 编程实例(I),13,5. 打印杨辉三角,1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1,MATLAB 编程实例(I),14,程序,function yanhui2(n) A = 1; disp(A); fo

11、r I=2:n A = A 0 + 0 A; disp(A); end,function yanhui1(n) A = 1; disp(A); for I=2:n B = 1 A; A = A 0; for J=2:I B(J) = A(J-1)+A(J); end disp(B); A = B; end,MATLAB 编程实例(I),15,1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36

12、9 1,打印结果,MATLAB 编程实例(I),16,6. 打印矩阵的最小值及其位置,function v pos = get_min1(A) pos = ; v = min(min(A); M N = size(A); for I=1:M for J=1:N if (v = A(I, J) pos = pos; I J; end end end,MATLAB 编程实例(I),17,7. 打印鞍点,所谓矩阵的鞍点,就是在矩阵中行上最小,列上最大的元素。如鞍点为(3, 3)21,94 50 17 45 0 77 62 13 78 58 73 79 21 28 54 86 44 10 22 65

13、99 52 14 90 31,MATLAB 编程实例(I),18,程序,function v pos = saddle(A) v = ; pos = ; line_min = min(A); N = size(A, 1); for I=1:N Js = find(A(I, :)=line_min(I); for K=1:length(Js) J = Js(K); if A(I, J) = max(A(:, J) v = v A(I, J); pos = pos; I J; end end end,MATLAB 编程实例(I),19,8. 求矩阵的所有K阶子式,给定一个MN矩阵,试求出其所有K阶

14、子式,MATLAB 编程实例(I),20,程序,M = 3; N = 5; % 生成一个M=3行N=5列% 有规律的矩阵 % 11 12 13 14 15 % 21 22 23 24 25 % 31 32 33 34 35 A = (1:M)*ones(1,N)*10 + ones(M, 1)*(1:N); disp(A); disp_rank_k(A, 3);,function disp_rank_k(A, K) M N = size(A); if K M | KN disp(Input error); return end Is = combnk(1:M, K); Js = combnk(1:N, K); cnt = 1; for I=1:size(Is, 1) II = Is(I, :); for J=1:size(Js, 1); JJ = Js(J, :); disp(sprintf(%3d: , cnt); cnt = cnt + 1; disp(A(II, JJ); end,MATLAB 编程实例(I),21,课后练习题,编写高斯列主元消去法求线性方程组的解,MATLAB 编程实例(I),22,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号