问题描述
COLUMN1
ROW1 Text Nr.1
ROW2 2345x3 double
ROW3 Text Nr.2
....乘以 24 次得到上述的 72x1 元胞数组
我现在的目标是以某种方式取消嵌套 2345x3 双倍内容,即获得以下数据顺序:
COLUMN1 COLUMN2 COLUMN3
Text Nr.1 (empty) (empty)
value 1 value 1 value 1
value 2 value 2 value 2
value 3 value 3 value 3
value 4 value 4 value 4
value 5 value 5 value 5
value 6 value 6 value 6
value 7 value 7 value 7
etc. etc. etc.
Text Nr.2 (empty) (empty)
Text Nr.1 (empty) (empty)
value 1 value 1 value 1
value 2 value 2 value 2
value 3 value 3 value 3
value 4 value 4 value 4
value 5 value 5 value 5
value 6 value 6 value 6
value 7 value 7 value 7
etc. etc. etc.
Text Nr.2 (empty) (empty)
我想为此使用 for 循环,以防行数发生变化。但是我不确定如何解决这个问题? (重塑,细胞乐趣?)
注意:我需要这个数据结构用于在 CAD 程序中生成几何结构的宏
解决方法
你可以这样使用:
x={'lorem';[1 2 3;4 5 6;7 8 9;2344*3+1 2344*3+2 2344*3+3];'ipsum'; ...
'dolor';-[1 2 3;4 5 6;7 8 9;2344*3+1 2344*3+2 2344*3+3];'sit amet'};
m={};
for i=1:floor(numel(x)/3) %ignore trailing garbage (incomplete entry)
k=x{3*(i-1)+2};
m=[ m ; ...
x(3*(i-1)+1) cell([1 size(k,2)-1]) ; ...
mat2cell( k,ones([size(k,1) 1]),2) 1]) ) ; ...
x(3*(i-1)+3) cell([1 size(k,2)-1]) ];
end
由于在您的用例中 for 循环仅执行 24 次迭代,我相信这种方法应该相当有效。