matlab 批量将二维矩阵 放入三维矩阵
matlab中如果有b1-b100100个而为矩阵,怎么能将他们批量放入一个三维矩阵中那?fori=1:3c(:,:,1)='b',num2str(i);end这是我的粗...
matlab中 如果有b1-b100 100个而为矩阵,怎么能将他们批量放入一个三维矩阵中那?
for i=1:3
c(:,:,1) = 'b',num2str(i);
end
这是我的粗略想法但是不对,求正解
m=[1 2 3 4 5
4 2 8 5 6
2 5 7 5 6
1 5 3 6 7
2 4 3 1 5
3 4 0 9 3];
m2 = m(:,2);
m2 = unique(m2);
[r,c] = size(m2);
for k = 1:r
L = m(:,2)==m2(k);
tm = mat2str(m(L,:));
ss = ['a' num2str(k) '=' tm];
eval(ss);
end;
for i=1:3
eval(['A=a',num2str(i),';']);
A=sum((A(:,1)*delta_0+A(:,2))./A(:,3));%i=1时,a就是A1,以此类推。
eval(['b',num2str(i),'=A',';']);
end 展开
for i=1:3
c(:,:,1) = 'b',num2str(i);
end
这是我的粗略想法但是不对,求正解
m=[1 2 3 4 5
4 2 8 5 6
2 5 7 5 6
1 5 3 6 7
2 4 3 1 5
3 4 0 9 3];
m2 = m(:,2);
m2 = unique(m2);
[r,c] = size(m2);
for k = 1:r
L = m(:,2)==m2(k);
tm = mat2str(m(L,:));
ss = ['a' num2str(k) '=' tm];
eval(ss);
end;
for i=1:3
eval(['A=a',num2str(i),';']);
A=sum((A(:,1)*delta_0+A(:,2))./A(:,3));%i=1时,a就是A1,以此类推。
eval(['b',num2str(i),'=A',';']);
end 展开
1个回答
展开全部
更多追问追答
追问
谢谢ls的回答很受用,我是新手,我现在的问题是有一个矩阵比如上面说的那个,按照第二列是否相同把他们分为很多小矩阵,然后对这些小矩阵列进行一些计算,最后每一个小矩阵会计算得到一个数值,然后我想要这些数值的加和,请问您我可以在第一部的时候不把这个大矩阵拆分吗?因为实际计算中有10000多个子矩阵要产生,我担心这样会比较慢。特别感谢您的精彩回答了!
我在问题里面大概写了一下我的程序对于前两步
追答
你的目的是什么?得到b1,b2,...、?单从代码来看:
b1等的计算:A=sum((A(:,1)*delta_0+A(:,2))./A(:,3)); 也就是m的第1+2列的和除以第3列,所以没有必要分小矩阵啊,可以先将m按照 m(:,1)*delta_0+m(:,2))./m(:,3) 计算,然后根据初始m的第二列判断哪些要相加。
假设delta_0=1,我下面的代码和你上面的结果一致,不知是否满足你的需求:
>> m=[1 2 3 4 5
4 2 8 5 6
2 5 7 5 6
1 5 3 6 7
2 4 3 1 5
3 4 0 9 3];
>> mb = (m(:,1)*delta_0+m(:,2))./m(:,3);
>> m2 = m(:,2);
>> m2 = unique(m2);
>> for i=1:length(m2)
b(i) = sum(mb(m(:,2)==m2(i)));
end
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询