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
展开
 我来答
learneroner
高粉答主

推荐于2016-11-01 · 关注我不会让你失望
知道大有可为答主
回答量:1.1万
采纳率:91%
帮助的人:6530万
展开全部

思路没问题,注意使用eval()()函数执行字符串代码即可,示例:

>> b1=zeros(3,3);
>> b2=ones(3,3);
>> b3=2*ones(3,3);
>> [m,n]=size(b1);
>> N=3; % 你的100
>> c = zeros(m,n,N);
>> for i=1:N
c(:,:,i) = eval(['b', num2str(i)]);
end
>> c %结果

c(:,:,1) =

     0     0     0
     0     0     0
     0     0     0


c(:,:,2) =

     1     1     1
     1     1     1
     1     1     1


c(:,:,3) =

     2     2     2
     2     2     2
     2     2     2
更多追问追答
追问
谢谢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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式