查看: 4911|回复: 9|关注: 0

[已解决] 请问我该如何读取元胞数组中元素?出现错误赋值具有的...

[复制链接]

新手

26 麦片

财富积分


050


13

主题

28

帖子

0

最佳答案
for b=1:cluster_n
index{b}=find(U(b,:))==max(U); %创建元胞数组
  end
      s(e,b)=0;s1(e,b)=0;s2(e,b)=0;
    for e=1:Ncell
      for b=1:cluster_n
        for r=1:length(index{b})
         s1(e,b)=s1(e,b)+Thcell(e,index{b(r)});%出现错误赋值具有的非单一 rhs 维度多于非单一下标数
         s2(e,b)=s2(e,b)+Thdd(e,index{b(r)});
         s(e,b)=s(e,b)+w(e,index{b(r)});
       end
         end
各位大神,请问我该如何修改才能正确读取元胞数组index{b}中元素,避免出现以上错误呢?

回复主题 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

305 麦片

财富积分


50500


1

主题

435

帖子

54

最佳答案
  • 关注者: 6
发表于 2017-12-8 11:23:53 | 显示全部楼层
假设a = {magic(3)},你可以a{1}(2,2)访问元包中的特定元素。
回复此楼 已获打赏: 0 积分

举报

新手

26 麦片

财富积分


050


13

主题

28

帖子

0

最佳答案
 楼主| 发表于 2017-12-8 14:27:13 | 显示全部楼层
lyhwinner 发表于 2017-12-8 11:23
假设a = {magic(3)},你可以a{1}(2,2)访问元包中的特定元素。

那我这种情况要怎么修改呢?
回复此楼 已获打赏: 0 积分

举报

新手

26 麦片

财富积分


050


13

主题

28

帖子

0

最佳答案
 楼主| 发表于 2017-12-9 14:53:39 | 显示全部楼层
lyhwinner 发表于 2017-12-8 11:23
假设a = {magic(3)},你可以a{1}(2,2)访问元包中的特定元素。

我现在是数组形式,并且数组中元素个数不确定,请问我该如何读取每一个元胞数组的元素呢?
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

305 麦片

财富积分


50500


1

主题

435

帖子

54

最佳答案
  • 关注者: 6
发表于 2017-12-9 15:48:25 | 显示全部楼层
红树林 发表于 2017-12-9 14:53
我现在是数组形式,并且数组中元素个数不确定,请问我该如何读取每一个元胞数组的元素呢? ...

数组元素不确定,就要使用numel或者length函数确定数组元素个数,如果想要全部读取的话a{1}(:)就全部读取了
回复此楼 已获打赏: 0 积分

举报

新手

26 麦片

财富积分


050


13

主题

28

帖子

0

最佳答案
 楼主| 发表于 2017-12-9 16:04:49 | 显示全部楼层
lyhwinner 发表于 2017-12-9 15:48
数组元素不确定,就要使用numel或者length函数确定数组元素个数,如果想要全部读取的话a{1}(就全部读取 ...

不好意思太麻烦你了,我还是不太明白
for r=1:length(index{b})
index{b}(1,r)   我这样写不对
这里出现错误赋值具有的非单一 rhs 维度多于非单一下标数
我想问一下假如数组index{1}={1,2,5,8},我该如何读取其中元素呢
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

305 麦片

财富积分


50500


1

主题

435

帖子

54

最佳答案
  • 关注者: 6
发表于 2017-12-9 16:07:24 | 显示全部楼层
红树林 发表于 2017-12-9 16:04
不好意思太麻烦你了,我还是不太明白
for r=1:length(index{b})
index{b}(1,r)   我这样写不对

你把你问题重新描述一下,简化一下,我帮你看一下,你现在的问题可读性不强,我都不是十分确定你究竟表达什么意思,或者你举个简单问题 ,我帮你解决
回复此楼 已获打赏: 0 积分

举报

新手

26 麦片

财富积分


050


13

主题

28

帖子

0

最佳答案
 楼主| 发表于 2017-12-9 16:14:09 | 显示全部楼层
lyhwinner 发表于 2017-12-9 16:07
你把你问题重新描述一下,简化一下,我帮你看一下,你现在的问题可读性不强,我都不是十分确定你究竟表达 ...
是这样的,现在index{1},index{2},index{3}是几个元胞数组,假设index{1}={1,2,5,8},index{2}={3,4,7},index{3}={6,9,10,11,12},我想通过循环的形式读取每一个元胞数组的元素。麻烦你了
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

305 麦片

财富积分


50500


1

主题

435

帖子

54

最佳答案
  • 关注者: 6
发表于 2017-12-9 16:28:36 | 显示全部楼层 |此回复为最佳答案
红树林 发表于 2017-12-9 16:14
是这样的,现在index{1},index{2},index{3}是几个元胞数组,假设index{1}={1,2,5,8},index{2}={3,4 ...
  1. clear
  2. index{1}={1,2,5,8};
  3. index{2}={3,4,7};
  4. index{3}={6,9,10,11,12};
  5. b = cellfun(@length,index)
  6. for i=1:length(index)
  7.     for j=1:b(i)
  8.         a = cell2mat(index{i}(j))
  9.     end
  10. end
复制代码

关键是把每个cell里面的元素个数找出来,然后作为for循环的循环次数,依次取出来
回复此楼 已获打赏: 0 积分

举报

新手

26 麦片

财富积分


050


13

主题

28

帖子

0

最佳答案
 楼主| 发表于 2017-12-9 17:10:14 | 显示全部楼层
lyhwinner 发表于 2017-12-9 16:28
关键是把每个cell里面的元素个数找出来,然后作为for循环的循环次数,依次取出来 ...

太感谢您了,我明白了,我还想问一下如何表示元素位置呢?a(i,j) = cell2mat(index{i}(j));这样可以吗?我想把它作为10*12矩阵s的列索引值,如s(1,a(1,3)),但是出现错误“元胞内容引用自非元胞数组对象。”请问我该如何进行转换呢?
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表