MATLAB中单元数组能转换成矩阵吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB中单元数组能转换成矩阵吗相关的知识,希望对你有一定的参考价值。

请问在MATLAB中的单元数组能整体的将其转换成矩阵码?例如有一个单元数组是有若干个矩阵构成,那么能否将这个单元数组直接转换成矩阵呢?谢谢各位了:)

能啊!用reshape命令;为了增加可信度,测试如下:
>> a=1:16;
>> b=reshape(a,4,4)

b =

1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
注意矩阵和数组转换时,矩阵编号是按列编号的,举这个例子是让你更清楚些!
参考技术A 可以的。比如mat(1,1)是一个元胞数组,mat(1,1,x,y)就可以访问数组内容了 参考技术B 双击MATLAB的桌面图标,进入MATLAB的工作界面

END
2.矩阵转换为单元数组
创建一个2*3的矩阵

num2cell(a):该函数可以将矩阵a转换成单元数组。其中,单元数组与矩阵相比,每一个元素都需要用方括号[]括起来。

iscell():该函数可以判断变量是否为单元数组,如果返回1,则变量为单元数组,如果返回0,则变量不是单元数组。可以判断a不是单元数组,c为单元数组。

Matlab:在for循环中排除零值矩阵单元的if条件

【中文标题】Matlab:在for循环中排除零值矩阵单元的if条件【英文标题】:Matlab: if-conditions to exclude zero-value matrix cells within for-loops 【发布时间】:2016-01-17 05:18:42 【问题描述】:

我有一个矩阵 M:

M=rand(n,m)

和一个长度为 m^n 的数组 K

K=zeros(m^n,1)

数组 K 填充了通过对所有可能的 m^n 个单元格垂直组合的 n 行中的矩阵 M 的值求和而获得的值。长度为 m^n 的辅助数组索引包含对单元格组合的索引引用,以便索引数组的列索引指示矩阵 M 的行和索引数组的值 - 矩阵 M 的列。在下面的示例中对于 4x3 矩阵,Index 数组的第二行 1,1,1,2 对应于单元格 M(1,1)、M(2,1)、M(3,1) 和 M(4 ,2) 等:

Index =

     1     1     1     1
     1     1     1     2
     1     1     1     3
     1     1     2     1
…

然后使用该索引引用来计算存储在 K 中的每个单元组合的值(总和):

for i=1:m^(n)
    for j=1:n
                K(i)= K(i)+M(j,Index(i,j))
    end
end

到目前为止,它工作正常。然而,我需要的是引入一个“if”条件,以便如果矩阵 M 的任何单元格等于零,那么包含此零值(单元格)的任何组合的值也将为零.我试图在 for 循环中引入它:

假设

M(1,1)=0
M(3,1)=0

然后

for i=1:m^(n)
    for j=1:n
        if M(j,Index(i,j))~=0
                K(i)= K(i)+M(j,Index(i,j)) 
        else
            K(i)=0
        end
    end
end

此解决方案似乎不起作用,因为它无法识别与零值单元格关联的单元格组合,我无法找出解决方法。有谁知道如何解决这个问题?谢谢!

【问题讨论】:

【参考方案1】:

如果我理解你的解释正确的话......

一旦您的代码发现矩阵元素等于 0,它应该跳出内部 for 循环,而不是继续求和。试试这个:

for i=1:m^(n)
    for j=1:n
        if M(j,Index(i,j))~=0
                K(i)= K(i)+M(j,Index(i,j)) 
        else
            K(i)=0
            break
        end
    end
end

您还应该注意,对于浮点数,例如由rand 产生的那些,它们可能不完全等于零。

【讨论】:

非常感谢,效果很好!!至于随机生成的数字不完全为零 - 在这种情况下这不是一个真正的问题,因为在算法的前面步骤中零值单元格被明确设置为零,但无论如何感谢您引起我的注意!

以上是关于MATLAB中单元数组能转换成矩阵吗的主要内容,如果未能解决你的问题,请参考以下文章

Matlab怎么把元胞数组转化成矩阵

Matlab怎么把元胞数组转化成矩阵

matlab中把字符串转换成数组

matlab如何把小数转换成分数

matlab如何将一个cell转换成数值型或字符串型

matlab如何将一个cell转换成数值型或字符串型