Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何从单元格数组复制列以创建另一个单元格数组?_Arrays_Matlab - Fatal编程技术网

Arrays 如何从单元格数组复制列以创建另一个单元格数组?

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矩阵

我有一个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矩阵。我的方法是对循环使用
,并通过
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矩阵。