假设我有pa
矩阵,直到pz
,如下所示:
pa= [0;0;0;0;0]';
pb=[-0.2;-0.2;-0.2;-0.2;0.8]';
pc=[-1.2;0.4;1.9;2.3;9.0]';
pd=[ ];
pe=[ ];
直到pz
Va=pa(1);
Vb=pa(2);
Vc=pa(3);
Vd=pa(4);
Ve=pa(5);
vdt=[1;0.309;-0.809;-0.809;0.309]'
然后使用此公式乘以
Vdtransformation=Vdt*[Va;Vb;Vc;Vd;Ve]
我需要乘以
Vdtransformation=Vdt*[Va;Vb;Vc;Vd;Ve]
但改变了
的价值Va=pb(1);Vb=pb(2);Vc=pb(3);Vd=pb(4);Ve=pb(5);
并再次为
做Va=pc(1);Vb=pc(2);Vc=pc(3);Vd=pc(4);Ve=pc(5);
直到pz。
有没有更简单的方法呢?我应该使用bsxfun
吗?
答案 0 :(得分:1)
设P = [pa,pb,...,pz]是一个有5行的矩阵和字母表中的字母数 列。
V = Vdt * P.你完成了。 V的每列是相对于每个pa,pb,...的Vdtransformation。
答案 1 :(得分:1)
首先,编写Vdt*[Va;Vb;Vc;Vd;Ve]
时没有逻辑,你可以改为写Vdt*pa'
这是等价的,或者更好地看@Daniel答案。
其次,如果要循环变量名称,可以使用eval
。例如,如果我的变量是:
pa=1;
pb=2;
pc=3;
A=3;
我希望计算A*pa
,A*pb
等,我可以创建所需字母的字符串
lett=char(97:99); % this creates the string 'abc'
然后循环“
for i=1:numel(lett)
A*eval(['p' lett(i)])
end