如果我有两个包含元素a1,a2,...和b1,b2,...的序列A和B,其中a_i和b_i的维数分别为1xn和1xm,那么我想创建一个新的序列C,其中包含:a_i(1)* b_i,a_i(2)* b_i,...,a_i(n)* b_i。因此,对于C的第i个元素,我想获得元素a_i和b_i的Kronecker乘积。我想在Matlab中编写此代码,但没有for循环。对于b_i是标量的情况,使用
C = A.*B
但是,这不适用于非标量b_i。所以我现在要做的是长度为L的序列:
C = [];
for ii = 1:L
C = [C; kron(A(ii,:),B(ii,:))];
end
但是我有一个想法,那就是必须要有for循环。这是我使用符号工具箱的代码:
clc; clear;
L = 5;
syms('a1',[L,1]);
syms('a2',[L,1]);
syms('b1',[L,1]);
syms('b2',[L,1]);
A = [a1,a2];
B = [b1,b2];
C1 = A.*B % only for size(B,2)=1
C2 = [];
for ii = 1:L
C2 = [C2;kron(A(ii,:),B(ii,:))];
end
C2
C3 = kron(A,B) % does not work
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句