我的问题分为两部分:
例如
A = [1 3 5
3 5 7
4 5 7
6 8 9]
现在,我知道第一部分的解决方案:
通过获得列
tempCol = A(:,iter), where iter = 1:end
关于问题的第二部分,我想(像这样,可能是对arraySplit数组的不同索引),但是一个完整的A列应该存储在splitArray中的单个索引中:
arraySplit(1) = A(:,1)
arraySplit(2) = A(:,2)
依旧......
示例矩阵A
,
arraySplit(1)
应该给我[ 1 3 4 6 ]'
arraySplit(2)
应该给我[ 3 5 5 8 ]'
当我尝试将列向量分配给我的数组时,我收到以下错误。
In an assignment A(I) = B, the number of elements in B and I must be the same.
我正在错误地分配和访问arraySplit
,请帮帮我......
答案 0 :(得分:1)
听起来A
听起来像你想要的一样 - 我无法想象你通过分裂得到任何东西的情景。但如果你这样做,那么你最好的选择可能是一个单元阵列,即
C = cell(1,3);
for i=1:3
C{i} = A(:,i);
end
编辑:请参阅下面的@ EitanT评论,以获得更优雅的方式。访问向量也使用与设置它相同的语法,例如v = C{2};
会将A
的第二列放入v
。
答案 1 :(得分:0)
在Matlab数组中,每个元素必须具有相同的类型。在大多数情况下,这是一种浮动类型。你的例子A(:,1)是一个4乘1的数组。如果将其分配给B(:,2),那么B(:,1)也必须是4乘1的数组。
可能咬你的一个常见错误是4 x 1阵列和1 x 4阵列不相同。一个是列向量,一个是行向量。尝试转置A(:,1)以获得1 x 4行行数组。
答案 2 :(得分:0)
您可以尝试以下内容:
A = [1 3 5;
3 5 7;
4 5 7;
6 8 9]
arraySplit = zeros(4,1,3);
for i =1:3
arraySplit(:,:,i) = A(:,i);
end
然后调用arraySplit(:,:,1)
来获取第一个向量,但这似乎是一个不必要的步骤,因为您可以通过访问与A(:,1)
完全相同的值来做到这一点。