matlab重新排列(permute)字符串数组

时间:2015-12-11 10:42:09

标签: arrays matlab

我有一个字符串数组:

size(entries)

 ans =

            1       19413

我想将数组重新排列为4853行和4列:

output=permute(entries,[4853 4]);

但得到以下错误:

  

使用置换时出错ORDER包含无效的置换索引。

我做错了(可能是显而易见的事)是什么?感谢

2 个答案:

答案 0 :(得分:3)

您目前有19413个元素,但您希望将其重新整形为由4853 x 4元素组成的4853 * 4 = 19412矩阵。世界上没有任何功能可以帮助你这样做,因为元素的原始和目标数量不匹配 - 它们是由一个元素关闭的。如果你删除其中一个元素......说...最后一个,那么我们就到了某个地方。

假设您犯了一个错误并且意外地包含了这个额外的元素,那么您不要在这里使用permute,而是使用reshapereshape的第二个参数是为每个目标维度展开的元素数量,这就是您要寻找的内容。首先删除出现在数组末尾的无关元素,然后reshape矩阵:

output = reshape(entries(1:end-1),[4853 4]);

答案 1 :(得分:1)

我迟到了3年,但这是仍然在寻找答案的任何人。

在上述情况下,是的,您应该使用reshape()并注意保留元素的总数。

要重新排序 n维(ND)矩阵的维数,请使用permute()

ORDER参数指定列的顺序。

例如,如果矩阵A为LxMxN,则下一行将使其变为MxLxN。

A = permute(A,[2 1 3]);

希望这可以清除一切。