-1

以下に示すように、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か?

4

2 に答える 2

1

P=[pa,pb,...,pz] を 5 つの行とアルファベット列の文字数の行列とします。

V=Vdt*P とします。これで完了です。V の各列は、各 pa、pb、... に対する Vdtransformation です。

于 2013-03-13T06:40:38.780 に答える
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 ループ "

for i=1:numel(lett)
    A*eval(['p' lett(i)])
end
于 2013-03-13T06:52:12.263 に答える