gpt4 book ai didi

matlab - 使用 Matlab 将 3d 矩阵转换为字符串并返回 3d 矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 20:13:32 24 4
gpt4 key购买 nike

我目前正在做一项关于如何使用 Wang 算法将 secret 图像嵌入封面图像的速记作业。基本上我只想改变例如:3d矩阵

A(:,:,1) = [5 7 8; 0 1 9; 4 3 6];
A(:,:,2) = [1 0 4; 3 5 6; 9 8 7];
A(:,:,3) = [7 9 3; 4 5 9; 1 9 9];

To

Str = '578019436104356987793459199'

如果有人可以提供帮助,反之亦然。

最佳答案

另一种方法是只使用 sprintf .您首先需要独立转置每个切片,因此根据 Ander 的回答调用 permute 将达到这一点。在您可以只提供 %d(整数)的单一格式字符串和实际置换矩阵之后,它将按列展开所有元素并将所有数字连接在一起。额外的好处是你不再需要假设只有一个数字占据每个矩阵元素:

str = sprintf('%d', permute(A, [2 1 3]));

例子

>> str = sprintf('%d', permute(A, [2 1 3]))

str =

578019436104356987793459199

>> class(str)

ans =

char

但是,要重建矩阵,您必须假设每个矩阵有一个元素。在这种情况下,您可以使用未记录的 sprintfc 函数,该函数可为每个字符输出一个单元格,然后使用 str2double 将字符转换为数字。最后, reshape 矩阵并撤消转置:

A2 = permute(reshape(str2double(sprintfc('%c', str)), size(A)), [2 1 3]);

例子

>> A2 = permute(reshape(str2double(sprintfc('%c', str)), size(A)), [2 1 3])

A2(:,:,1) =

5 7 8
0 1 9
4 3 6


A2(:,:,2) =

1 0 4
3 5 6
9 8 7


A2(:,:,3) =

7 9 3
4 5 9
1 9 9

关于matlab - 使用 Matlab 将 3d 矩阵转换为字符串并返回 3d 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49385889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com