Arrays 如何从单元格数组复制列以创建另一个单元格数组?
我有一个1×4单元数组(1行4列)。该单元格数组的每一列都包含一个4乘4的矩阵。我只想复制每4×4矩阵第4列的第一行、第二行和第三行,并创建另一个3×1的1×4单元数组(复制了3行和1列元素)。我想知道做这件事的有效方法是什么Arrays 如何从单元格数组复制列以创建另一个单元格数组?,arrays,matlab,Arrays,Matlab,我有一个1×4单元数组(1行4列)。该单元格数组的每一列都包含一个4乘4的矩阵。我只想复制每4×4矩阵第4列的第一行、第二行和第三行,并创建另一个3×1的1×4单元数组(复制了3行和1列元素)。我想知道做这件事的有效方法是什么 for i=1:1:number_links for j=1:1:3 O{1,i}(j,4)=T{1,i}(j,4); end end 我不确定你的代码。这里有一个例子。我创建了一个名为c的1×4单元数组。每个单元格是随机数的4乘4矩阵
for i=1:1:number_links
for j=1:1:3
O{1,i}(j,4)=T{1,i}(j,4);
end
end
我不确定你的代码。这里有一个例子。我创建了一个名为
c
的1×4单元数组。每个单元格是随机数的4乘4矩阵。我的方法是对循环使用,并通过c{1,i}=c{1,i}(1:3,4)
更改每个单元格。这里c{1,i}(1:3,4)
给出了第4列的第1、第2和第3行
% create 1 by 4 cell array. Each cell is a 4 by 4 matrix
c = cell(1,4);
for i = 1:4
c{1,i} = rand(4);
end
disp(c)
% change 1 by 4 cell array. Each cell is a 3 by 1 matrix
for i = 1:4
c{1,i} = c{1,i}(1:3,4);
end
disp(c)
输出:
[4x4 double] [4x4 double] [4x4 double] [4x4 double]
[3x1 double] [3x1 double] [3x1 double] [3x1 double]
我不确定你的代码。这里有一个例子。我创建了一个名为c
的1×4单元数组。每个单元格是随机数的4乘4矩阵。我的方法是对
循环使用,并通过c{1,i}=c{1,i}(1:3,4)
更改每个单元格。这里c{1,i}(1:3,4)
给出了第4列的第1、第2和第3行
% create 1 by 4 cell array. Each cell is a 4 by 4 matrix
c = cell(1,4);
for i = 1:4
c{1,i} = rand(4);
end
disp(c)
% change 1 by 4 cell array. Each cell is a 3 by 1 matrix
for i = 1:4
c{1,i} = c{1,i}(1:3,4);
end
disp(c)
输出:
[4x4 double] [4x4 double] [4x4 double] [4x4 double]
[3x1 double] [3x1 double] [3x1 double] [3x1 double]
。但是可以使用cellfun
隐藏循环。我不确定它是否真的比普通的旧循环更干净,但很高兴了解其可能性:
O = cellfun(@(x)x(1:3,4),T,'UniformOutput',false);
这里我们使用一个匿名函数@(x)x(1:3,4)
,它应用于每个元素T{1,i}
。也就是说,O{1,i}=T{1,i}(1:3,4)
,就像邦华的回答一样。。但是可以使用cellfun
隐藏循环。我不确定它是否真的比普通的旧循环更干净,但很高兴了解其可能性:
O = cellfun(@(x)x(1:3,4),T,'UniformOutput',false);
这里我们使用一个匿名函数@(x)x(1:3,4)
,它应用于每个元素T{1,i}
。也就是说,O{1,i}=T{1,i}(1:3,4)
,就像在邦华的回答中一样。请分享你的代码我刚才做的,但它给了我一个3乘4的矩阵。我正在寻找一个3乘1矩阵在每一个1乘4单元阵列。请分享你的代码我刚才做了,但它给了我一个3乘4矩阵。我在每个1×4单元阵列中寻找一个3×1矩阵。