matlab中矩阵问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 18:35:16
有一个公式E=(-((h^2)*(L-x)/(E*I))*R0)
其中,h,L,E,I和R0都是已知数,x是一个for loop循环数,如果=3,那就是说要进行4次运算,x的值分别是0,1,2,3得到了4个不同的E。
如何让这4个数成为一个矩阵排列啊!就是让最后的答案为
x0
x1
E= x2
x3
问题补充:x不是固定的数,可以去任何数字,我这里用的是3,如果我用的是100也可以,只要是整数

%在循环体外定义一个空数组A
A=[]
%在循环体内:
A=[A;E];

一种方法,在公式含有自变量部分的乘除和乘方符号前面加'.',这样自变量就可以代入矩阵了。
如果是矩阵跟常数进行乘除运算,可以不用加'.'。
加减法也不用加'.',不管是矩阵跟矩阵加减还是矩阵跟常数加减。
就是说,你这个公式,如果h,L,E,I,R0都是常数,那直接让x作为矩阵代入就可以。
x=[0 ; 1 ; 2 ; 3];
E=-( (h^2) *(L-x)/ (E*I) )*R0
%你这个公式含有x的刚好跟常数加减乘除,可以不加'.'
%如果是h/(L-x)或者(L-x)^2的话,就必须写成h./(L-x)以及(L-x).^2了

如果h,L,E,I,R0也是矩阵,那要加'.'了。注意这些矩阵的行数列数要保持一致。
就是
x=[0; 1 ; 2; 3];
E=-((h .^2).*(L-x)./(E.*I)).*R0

总之就是想要矩阵跟矩阵对应元素相乘除或者乘方,就要加'.'。
如果x是矩阵或者向量,假设x=[1:3];
x.*(x+1) %就是[1*2, 2*3, 3*4],如果是x*(x+1)就出错了,那是矩阵的乘法了,得让x是方阵才可以
1./x %每个元素取倒数,就是[1 , 1/2, 1/3]
x.^2 %每个元素平方,就是[1 4 9]
2.^x %等于[2^1, 2^2, 2^3]=[2 4 8]
%不过x+1和x.+1是一样的,所以对于加减法可以不加'.'

另一种方法就是循环前E=[];
循环内部E=[E; -((h^2)*(L-x(k))/(E*I))*R0]; k为循环变量。
x=0:3;
E=[];
for k=1:length(x)
E=[E; -((h^2)*(L-x(k))/(E*I))*R0];