【问题标题】:Create a 1-D array that shows the indexes of a 2-D array [closed]创建一个显示二维数组索引的一维数组[关闭]
【发布时间】:2014-11-17 12:36:32
【问题描述】:

比方说,我们在 Matlab 中有如下二维数组:

A=[0 451
   0 446
   0 543
   .....]

等等。我想创建另一个一维数组,它将执行此操作: 例如,让我们调用一维数组BB(1) 将“显示”到[0 451]。 B(2) 将“显示”给[0 446],B(3) 将“显示”给[0 543] 等等。我希望任何能给我一点帮助的人都清楚我想要的结果。

【问题讨论】:

  • 你的问题不够清楚。 “显示”是指“显示”或“指向”或“返回值”。 B(1) 是否必须能够接收赋值(例如B(1)=[0 123])还是只是一个返回值的表达式(例如:newValPair = B(1))?
  • 不确定 A 是怎样的二维数组,是否缺少一些新行?是否有理由不能将其重塑为 2 列矩阵,即 B=[0, 451; 0, 446; ...],然后调用 B(1, :)。
  • @Hoki 我的意思是“指向”。如果我不够清楚,我很抱歉。 B(1) 必须能够接收分配,正如你所说的那样。
  • @nivag A 是一个二维数组,没有任何行丢失。我只是想创建一个一维数组,其单元格将“指向” B 表的各个单元格。问题通过以下可接受的答案解决。 :)
  • @ParagS.Chandakkar 完成,抱歉耽搁了。

标签: arrays matlab indexing dimensions cells


【解决方案1】:

两种方式:

a=1:10
split_a1=(reshape(a,2,[])).';

split_a1(1,:),...,split_a1(5,:); 访问split_a1

split_a2=mat2cell(a,1,2*ones(1,numel(a)/2));

split_a2{1},...,split_a2{5}; 的身份访问split_a2

【讨论】:

  • 非常感谢您的帮助,它帮助我处理了这个问题。
【解决方案2】:

好吧,您刚刚设置的内容是不可能的,您正在混合数组和维度。 正如您所解释的,B 是二维的,A 是一维的。你可以通过这样做来做你想做的事:

j=0; 
i=1;
while i<=size(A,2)/2;
    j=j+1;
    B(i,1)=A(j);
    j=j+1;
    B(i,2)=A(j);
    i=i+1;
end

【讨论】:

  • 您可以通过以下方式实现相同的目标:reshape(A,2,[]).'
  • 很高兴知道。谢谢
  • @arodrisa 谢谢你的回答,但另一种解决方案对我来说效果更好。
  • 没问题,但你现在描述的不一样了:)
猜你喜欢
  • 2021-06-04
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
  • 2023-01-09
  • 2013-07-16
  • 2016-12-27
  • 2011-04-13
相关资源
最近更新 更多