㈠ matlab怎么用
判断矩阵一致性检验的Matlab源程序代码
Matlab源程序代码如下:
clc
clear
disp('请输入判断矩阵A')
A=input('A=');
[n,n] = size(A)
%方法1: 算术平均法
Sum_A = sum(A);
SUM_A = repmat(Sum_A,n,1);
Stand_A = A ./ SUM_A;
Stand_A = A ./ Sum_A; % 这样也可以的
disp('算术平均法求权重的结果为:');
disp(sum(Stand_A,2)./n)
%方法2: 几何平均法
Prct_A = prod(A,2);
Prct_n_A = Prct_A .^ (1/n);
disp('几何平均法求权重的结果为:');
disp(Prct_n_A ./ sum(Prct_n_A))
%方法3: 特征值法求权重
[V,D] = eig(A);
Max_eig = max(max(D))
[r,c]=find(D == Max_eig , 1);
disp('特征值法求权重的结果为:');
disp( V(:,c) ./ sum(V(:,c)) )
%计算一致性比例CR
CI = (Max_eig - n)/(n-1);
RI=[0 0.0001 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58
1.59];
% 这里n=2时,一定是一致矩阵,所以CI = 0,为了避免分母为0,将这里的第二个元素改为了很接近0的正数
CR=CI/RI(n);
disp('一致性指标CI=');disp(CI);
disp('一致性比例CR=');disp(CR);
if CR<0.10
disp('因为CR<0.10,所以该判断矩阵A的一致性可以接受!');
else
disp('注意:CR >=
0.10,因此该判断矩阵A需要进行修改!');
end
㈡ matlab编程入门需要怎么做
入门需要做下面几个方面事:
1、M语言编程。这是所有Matlab操作的基础,Matlab的所有功能都是通过M语言来实现的。M语言是一种简单的脚本语言,学习M语言,要学会基本的语句,还要能够掌握基本的文件IO,GUI开发,数据导入,矩阵操作等等。
2、科学计算。科学计算是matlab最为强大的功能之一,这一部分的学习实质上是对大学数学的一个复习。你得复习微分方程的建立,积分求导的法则,线性代数的基本理论。复习完这些知识,再来进行各种计算。
3、机器学习。Matlab内置了丰富的机器学习库最新版的matlab甚至支持深度学习以及GPU运算,只需要一些简单的M语言编程就能快速搭建起来一个网络。
4、模拟仿真。能够进行模拟仿真也是Matlab的一大特色功能,在科学领域,小到原子运行,大到宇宙爆炸,没有他不能胜任的;在工程领域,电磁场模拟,机械结构评估,水利电力仿真,Matlab几乎无所不能。
1、我们必须下载好一个matlab版本,一般来说新版的话,它的内置命令函数简化,操作容易上手快,对基础知识的储备也不是很多。
2、这款软件需要一定的数学知识,最为重要的是懂些矩阵和线性代数的知识,为了更好的更直观地表达数据的可视化。
3、后面我们自己可以找一本有关matlab的书籍教材,网上资料很多,找一本然后按照上面的例子上手matlab。
4、最后,我们再根据具体的工程、项目的需求来验证我们的matlab知识。
㈢ Matlab编程
60个同学抽60个题目且题号各不相同,用matlab实现,需要使用matlab的randperm函数,代码如下:
截图效果2
tihao=randperm(60);xuehao=1:60;for i=xuehao;disp(sprintf('学号为%d的同学,恭喜你,抽中第%d题 ',i,tihao(i)));end;
㈣ matlab如何编程
首先,在我们的桌面上找到matlab软件的图标,将鼠标移到该位置双击点开,这时电脑屏幕会弹出matlab软件的主界面。
这只是我的一点个人经验,还是希望能够帮助大家的。
㈤ 用matlab可以学到的编程技巧
1、入门——学会数学(矩阵)方面的有关操作,及其各类常见函数的应用。 2、再次入门——学会用matlab面向对象语言的编程方法技巧。 3、略窥门径——由于matlab仅仅是一个工具软件,所谓的傻瓜语言,所以它仅仅是一个辅助性的东西,不是为了学习matlab而学习matlab,我们最重要的还是让他来为我们服务,应该根据自己的现阶段具体应用领域或者以后的领域具体而定,matlab提供很多工具箱(信号处理、控制、语音等等),定位好自己,事半功倍。 4、自己摸索——matlab不像C语言,它很散,应该自己在工作学习中记下使用的函数/技巧/程序,向高手方向进发。
㈥ 问一下大神matlab应该怎么编程
不需要用循环,直接使用逻辑数组运算更快。
我假设你的x和x(1)--x(n)是不同的变量,那么我用a来表示你的x,用x数组代表你的x(1)--x(n)
我随便给这些数赋值
a=10;
x=1:3:30;
k=5;
temp = true(size(x));
temp(k) = false;
y = prod(a - x) / prod(x(k) - x(temp));
a-x是生成数组[a-x(1), a-x(2), ..., a-x(n)],prod()是吧这个数组相乘
temp是一个逻辑数组,和x相同大小,并且只有第k个数是false。x(temp)就是生成[x(1), x(2),..., x(k-1), x(k+1), ..., x(n)]
其他的应该容易理解
补充:拉格朗日插值多项式可也这么写:
%x0,y0是已知各点坐标,共n点
x0 = [1, 2, 3];
y0 = [1, 8, 27];
n = length(x0);
%x是要求的点
x = 4;
y = 0;
for k = 1:n
temp = true(size(x0));
temp(k) = false;
y = y + y0(k) * prod(x - x0(temp)) / prod(x0(k) - x0(temp));
end