[已解决] 如何把cell中的每一个数组变成单元格内含数组的形式(见图)

[复制链接]
wx_l7KZkR7r 发表于 2021-10-11 09:41:22
目前的程序:
a=randn(3,10)
r=3;
b=zeros(5,2,r);
for i=1:r
    b(:,:,i)=reshape(a(i,:),[5,2]);
end
c=mat2cell(b,[5],[2],[1 1 1])


希望程序能输出像图片那种形式的结果,即一个cell的一列有三个5×2 double,点开每个单元格能修改double里面的内容

希望达到的效果

希望达到的效果

最佳答案


TouAkira 发表于 2021-10-11 10:26:46
squeeze函数
直接一句 new_c = squeeze( c ) 就解决了
new_c =
  3×1 cell 数组
    {5×2 double}
    {5×2 double}
    {5×2 double}

7 条回复


lyqmath 发表于 2021-10-11 10:16:59
  1. clc; clear all; close all;
  2. a=randn(3,10)
  3. r=3;
  4. b=[];
  5. for i=1:r
  6.     b{i,1}=reshape(a(i,:),[5,2]);
  7. end
复制代码

TouAkira 发表于 2021-10-11 10:26:46
squeeze函数
直接一句 new_c = squeeze( c ) 就解决了
new_c =
  3×1 cell 数组
    {5×2 double}
    {5×2 double}
    {5×2 double}
回复此楼

wx_l7KZkR7r 发表于 2021-10-12 09:26:16
TouAkira 发表于 2021-10-11 10:26
用 squeeze函数
直接一句 new_c = squeeze( c ) 就解决了
new_c =

还想请问一下,就是我实际的矩阵里是有几百行的话(就是举例代码里面的那个a),那我这一行代码c=mat2cell(b,[5],[2],[1 1 1]),三个1的这里是要填几百个1,还是有什么更好的解决办法?

因为我原本最初的目的就是把一个二维矩阵的每一行都变成一个新的二维矩阵,然后再变成图片的那种格式。

TouAkira 发表于 2021-10-12 09:40:49
wx_l7KZkR7r 发表于 2021-10-11 21:26
还想请问一下,就是我实际的矩阵里是有几百行的话(就是举例代码里面的那个a),那我这一行代码c=mat2cel ...

ones函数 ,比如
A = rand( 3, 2, 5 );
C = mat2cell( A, size( A, 1 ), size( A, 2 ), ones( 1, size( A, 3 ) ) )

wx_l7KZkR7r 发表于 2021-10-12 10:52:08
TouAkira 发表于 2021-10-12 09:40
用 ones函数 ,比如
A = rand( 3, 2, 5 );
C = mat2cell( A, size( A, 1 ), size( A, 2 ), ones( 1, size ...

感谢:loveliness:

wx_l7KZkR7r 发表于 2021-10-12 13:12:08
TouAkira 发表于 2021-10-12 09:40
用 ones函数 ,比如
A = rand( 3, 2, 5 );
C = mat2cell( A, size( A, 1 ), size( A, 2 ), ones( 1, size ...

如何划分这种cell类型的数据
https://www.ilovematlab.cn/thread-611013-1-1.html
(出处: MATLAB中文论坛)
这种问题也能解决吗?

wx_l7KZkR7r 发表于 2021-10-20 11:46:43
TouAkira 发表于 2021-10-12 09:40
用 ones函数 ,比如
A = rand( 3, 2, 5 );
C = mat2cell( A, size( A, 1 ), size( A, 2 ), ones( 1, size ...

关于使用crossvalind进行数据集划分的问题
https://www.ilovematlab.cn/thread-611047-1-1.html
(出处: MATLAB中文论坛)
希望能得到您的解答
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表