matlab中怎样将一个矩阵里的元素作为另一组矩阵里的元素

有matlab中的一个矩阵,有m行:如 a b c d
e f g h
i j k l
。。。。
每行的四个元素分别代表一个新的2*2矩阵里的元素,即(a b) (e f)……还
c d g h

需将新的m个矩阵相乘,因为m的值较大,所以希望能尽快提高运行速率,最好不用或少用循环语句
貌似排版比较乱,重新写一下,原有矩阵[a,b,c,d;e,f,g,h;……]共m行,将每行的四个元素分别放入一个新矩阵的四个元素中[a,b;c,d]……有m个新矩阵,还需这m个矩阵联乘

这个要看你的一行有多少列,如一行有八列
b = reshape(a,[],4,2)
如一行16列
b = reshape(a,[],4,4)
n是列的数量/4
即:
n = size(a)
b = reshape(a,[],4,n(2)/4)
bs = size(b)
sum = []
for i = 1:bs(3)
sum = vertcat(sum,b(:,:,i))
end

然后你的sum里面就是每四个要变成2x2的矩阵为一行

sum = reshape(sum',2,2,[])
这样你就得到了你需要的所有2x2矩阵。
只不过你要乘的时候要用' 来旋转矩阵

ss = size(sum)
multiply = ones(2)
for i = 1:ss(1)
multiply = multiply .* sum(:,:,i)'
end

如有问题补充请百度hi我。
__________________________________________

貌似你一行本来就只有4列
如数据在sum里面:
sum = reshape(sum',2,2,[])
multiply = ones(2)
for i = 1:length(sum)
multiply = multiply .* sum(:,:,i)'
end

就可以了。 我前面还以为你你的输入格式是很多列的。
重点是
sum = reshape(sum',2,2,[])

然后乘的时候记住要用“'”旋转矩阵
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-03-24
clear;clc;
a=rand(100,4);
[m,n]=size(a);
aa=reshape(a',n/2,m*2)';
%连乘只会用循环了,不知怎么改进
z=aa(1:2,:)*aa(3:4,:);
for i=3:m;
z=z*aa(2*i-1:2*i,:);
end
z

matlab中怎样将一个矩阵里的元素作为另一组矩阵里的元素
for i = 1:bs(3)sum = vertcat(sum,b(:,:,i))end 然后你的sum里面就是每四个要变成2x2的矩阵为一行 sum = reshape(sum',2,2,[])这样你就得到了你需要的所有2x2矩阵。只不过你要乘的时候要用' 来旋转矩阵 ss = size(sum)multiply = ones(2)for i = 1:ss(1)multiply = multipl...

matlab中怎样将一个矩阵里的元素作为另一组矩阵里的元素
比如说是2阶方阵,现在对其中的元素进行一些运算并把结果重新赋值到另一个矩阵中

matlab把一个矩阵的某些元素赋值给另一个矩阵
AAnum=zeros(6,Len); for i=1:6 for j=1:Len AAnum(i,j)=Properties_center_stand(i,strfind(S0,tline(j))); end end其中SO是已知的一个只有20个字符的矩阵,而tline(j)的值一定是SO中的某一个字符,现在的问题是,我运行整个程序的时候到AAnum(i,j)=Properties_center_stand(i,strfind(S0,tli...

matlab中如何把一个矩阵的元素调用在另一矩阵中
1、首先打开电脑上的“matlab”软件,主界面如下图所示,可以看到命令行窗口。2、接着在命令行输入一个矩阵A,矩阵A的值可以自定义,此处以1-9数字为例构造矩阵A,矩阵A如下图所示。3、拼接矩阵需要至少两个矩阵,在命令行输入一个矩阵B,此处以10-18数字为例构造矩阵B。4、下面使用命令C=[A B]...

...如何批量提取matlab矩阵中的元素并作为另一个矩阵的坐标?
B?=?magic(5);B?=?B(1:3,?:)[r,c]?=?find(B20);A?=?[r?c]?将B中以A作为下标的元素置为NaN B((A(:,2)-1)*size(B,1)+A(:,1))?=?NaN ?输出:?B?=?magic(5);?B?=?B(1:3,?:)B?= ???17???24???1???8???15 ???23???5???7???14???16 ???4?

如何将一个矩阵的元素添加到另一个矩阵中
如何将一个矩阵的元素添加到另一个矩阵中 找一个矩阵元素在另一个矩阵的位置可以使用MATLAB的内置函数ismember(A,B): % 例如A = rand(3);B = rand(5); B(2,3) = A(2,3); % 使A、B之间有相同元素[Lia,Locb] = ismember(A,B);% Lia 为1则改为对应元在B中出现,

matlab怎么将矩阵的元素转置到其他位置?
1、在命令行窗口中输入“r = [ 1 2 3 4 ];tr = r'”,其中单引号(')是用于转置操作的。2、按回车键之后,可以看到将行向量r转置成为了列向量tr。3、也可以将列向量转置成为行向量,在命令行窗口中输入“v = [1;2;3;4];tv = v'”。4、按回车键之后,可以看到将列向量v转置成为了...

matlab中怎么替换矩阵种的元素
比如说是2阶方阵,现在对其中的元素进行一些运算并把结果重新赋值到另一个矩阵中,proc iml;方法:一 proc iml;beta={2 3,3 4};q=j(2,2,.);q[1,2]=beta[1,1]\/2;q[2,2]=beta[2,2]**2\/3;q[1,1]=1;q[2,1]=beta[1,1]\/2;print beta q;...

matlab 矩阵矩阵元素替换
1、首先我们打开matlab,在命令行窗口中输入a=[120155;2407;2300;0000]。2、输入a(find(a==0))=[],去除掉a矩阵内的0元素。3、按回车键之后,可以看到已经去除了a矩阵所有的0元素,并变成了1行数据。4、如果我们想去除矩阵的全0行的话,输入a(all(a==0,2),:)=[]。

在Matlab中如何将一个矩阵中满足某条件的数值放入另外一个矩阵中
B = A(A~=0)

相似回答