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中单元数组能转换成矩阵吗的主要内容,如果未能解决你的问题,请参考以下文章