【问题标题】:Change value inside a loop on Matlab在 Matlab 上的循环内更改值
【发布时间】:2013-04-09 10:10:38
【问题描述】:

我有一个问题,关于如何在循环的每次迭代中使用不同的值。我有一张有 145 个波段的图像。我计算大小、行数、列数和带数

size=size(HYP);
nrow= size(1);
ncolu= size(2);
nbands= size(3);

我必须对每个波段进行操作,然后获得结果,但我不知道如何为每次迭代自动更改其中一个值。我将尝试简化问题。这是我的循环。值 rad1 是之前定义的。我需要在每个循环中使用之前定义的某个值(例如,band2 值 rad2、band3 rad3...)并为每个值提取一个结果(nd1 自动更改为 nd2 等)

output= zeros(nrow,ncolu,nbands);
for banda=1:nbands;
      nd1= -((3.141592*rad1)/-HYP2(:,:,1));
output(banda,1)= (nd1);
    end
end

所以,对于第一次迭代:

nd1= -((3.141592*rad1)/-HYP2(:,:,1)); 输出(banda,1)= (nd1);

第二次……

nd2= -((3.141592*rad2)/-HYP2(:,:,2)); 输出(banda,2)= (nd2);

Rad1,rad 2...rad145 等是之前定义的。最后,输出将是一个 145 波段矩阵。

你知道我该怎么做吗?真的提前谢谢了,

【问题讨论】:

  • 将 nd 和 rad 设为向量?所以你有 nd(banda) 和 rad(banda)。或者使用元胞数组。

标签: matlab loops


【解决方案1】:

不要尝试使用不同的变量名。只需使用rad(1)rad(2) 等,然后

output= zeros(nrow, ncolu, nbands);
for banda=1:nbands;
   output(:,:,banda) = -((3.141592*rad(banda))/-HYP2(:,:,1));
end

(顺便说一下,您对output 的初始化与循环中的代码不匹配。)

【讨论】:

  • 嗨,克里斯托弗,感谢您的快速回复。问题是 rad1、rad2 等是之前定义的具有不同值的变量。因此,例如,对于第一个波段,我需要使用 rad1 值,对于第二个 rad2,等等。
  • 更改定义这些变量的代码。严重地。这样的变量名只是自找麻烦。 (不过,如果您绝对必须,MATLAB 常见问题解答会告诉您如何使用它们。)
  • 感谢克里斯托弗的帮助。我要试试! ;)
  • +1 用于说服 OP 修改他现有的代码,而不是仅仅为他的问题提供一个简单的解决方法(在 cmets 中:stackoverflow.com/questions/15899155/…)。给一个人一些代码,你就可以帮助他解决问题。教一个人编程,你会帮助他一辈子……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-10
  • 2012-03-18
  • 2020-10-23
  • 1970-01-01
  • 2020-05-18
  • 2014-12-13
  • 2014-04-14
相关资源
最近更新 更多