请问如何使用MATLAB进行元胞数组批量提取数据。

我的元胞数组是1行209列的,假设我要提取其中每个元胞中的第1列和第209列,并将其合并成一个新的矩阵,请问怎么操作,谢谢。
我的元胞数组是1行209列的,假设我要提取其中每个元胞中的第1列和最后1列,并将其合并成一个新的矩阵,请问怎么操作,谢谢。

假设A是209个元素的元胞数组,并且每个元素矩阵的行数相同。

B=[];
for n=1:length(A)
    B=[B,A{n}(:,[1 end])];%我不知道你想怎么合并,我就按A{1}两列A{2}两列...A{n}两列这样的顺序合了,不是的话你自己改
end

追问

你好,谢谢你的回答,不过我提示了部分错误的信息:
??? for?n=1:209
|
Error: Unexpected MATLAB operator.

追答

for?n=1:209我好想没有写这个吧,for和n中间哪来的问号

追问

额。。。我确实是运行了这个,
不过貌似还是这个问题。。。我这里的data就是A。。。
??? for?n=1:length(data)
|
Error: Unexpected MATLAB operator.
里面每个小的矩阵都是180行72列的。。。

谢谢。。。

追答

不要直接复制,你手动输入一下命令。网上答题有时候网站会自己添加一些我们看不到的字符。

追问

真的成功了 非常谢谢你!!!我也想知道要是我不是合并他们的列,而是合并他们的行需要修改什么地方呢。。。比如我要合并胞元中每个矩阵的第一行和最后一行,也把它做成一个大的矩阵。。。非常感谢,我再加点分,很晚了。。。ORZ

追答

合并行

B=[];
for n=1:length(A)
    B=[B;A{n}([1 end],:)];
end

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-25
如果每个元胞内的矩阵相同,则可如下处理
num=size(yourcell{1},2);
alldata=[yourcell{:}];
yourdata_1_209=alldata(:,mod((1:end),num)==1 | mod((1:end),num)==209)
yourdata_1_END=alldata(:,mod((1:end),num)==1 | mod((1:end),num)==0)
相似回答