铸字更高维度的矩阵

18视图(30天)
肖恩
肖恩 2011年9月21日
回答: 卡尔Witthoft 2020年3月30日
我最近发现我的懊恼,定型功能只适用于标量和1 d矩阵(即数组)。
有人知道一种定型矩阵与2、3、4,或多个维度(而不是简单的索引,铸字或1维数组的所有元素到一个新的变量?
2的评论
肖恩
肖恩 2011年9月21日
'单'命令将新类的数据,但它截断任何数据,被认为是“飞出他的射程”这个新类的新类。(如uint8 (int8 (5)) = = 0)
另一方面,“定型”的数据,所以:
定型(int8 (5), uint8) = = 251
问题是定型函数只接受标量和一维数组。

登录置评。

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2011年9月21日
假设你有一个3 x 12 uint8矩阵,并想定型uint32:那你想要什么意思?你希望的结果是什么形状?有正确的数据量在9 uint32但3 x 3肯定会输出错误的形状,考虑到4字节的第一uint32必须从第一行第二列的输入数组。
唯一有意义的方式对我或多或少地保留尺寸会,如果当一个类型被定型为另一种类型,输出的第一个维度将调整为每列占据相同数量的字节原先的第一个维度(变大,如果使用的新型少房间,越来越小,如果新类型占据更多的空间),这是一个错误如果第一列不能被转换成一个整数的物品在新的类型。
如果这是规则可以使用,不会很难实现它。请记住,重塑()和(:)不移动数据,把一个新的头,迅速的操作是:
函数NewArray = typecastarray (TheArray NewType)
curshape = num2cell(大小(TheArray));
NewArray =重塑(定型(TheArray (:), NewType), [], curshape{2:结束});
结束
1评论
VINAYAK KARANDIKAR
VINAYAK KARANDIKAR 2019年1月9日
这并不适用于音频数据。例如数组(2频道)char类型的音频文件,当铸造成uint8数组(因为声音和wavplay命令不接受char类型的数据类型),如果音频播放,我们听到垃圾,这就是为什么! ! !

登录置评。

答案(1)

卡尔Witthoft
卡尔Witthoft 2020年3月30日
如果你知道一点关于你提前二维数组,然后试试这个,似乎为我工作
在这里我知道我的列是4 * N个字节长,我想定型列
arrsize =大小(arrdat);
f32 = 0 (arrsize (1) / 4, arrsize (2));
jrow = 1:4:大小(arrdat, 1),
count4 = jrow: jrow + 3;
rowquad = arrdat (count4:);
f32 ((1 + (jrow-1) / 4):) =双(定型(rowquad (:),“单一”));
结束

类别

找到更多的在只是为了好玩帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!