我有一个字符串数组:
size(entries)
ans =
1 19413
我想将数组重新排列为4853行和4列:
output=permute(entries,[4853 4]);
但得到以下错误:
使用置换时出错ORDER包含无效的置换索引。
我做错了(可能是显而易见的事)是什么?感谢
答案 0 :(得分:3)
您目前有19413个元素,但您希望将其重新整形为由4853 x 4
元素组成的4853 * 4 = 19412
矩阵。世界上没有任何功能可以帮助你这样做,因为元素的原始和目标数量不匹配 - 它们是由一个元素关闭的。如果你删除其中一个元素......说...最后一个,那么我们就到了某个地方。
假设您犯了一个错误并且意外地包含了这个额外的元素,那么您不要在这里使用permute
,而是使用reshape
。 reshape
的第二个参数是为每个目标维度展开的元素数量,这就是您要寻找的内容。首先删除出现在数组末尾的无关元素,然后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]);
希望这可以清除一切。