【问题标题】:Cropping a Matlab array?裁剪一个 Matlab 数组?
【发布时间】:2012-11-08 23:23:43
【问题描述】:
fname = dir('*sir');
[tmp, head] = loadsir(fname(1).name);
dayh99 = zeros(length(fname),size(tmp,1),size(tmp,2));  %41-100,1360,3600

% use temporary array to simplify 3d array creation
for i=1:length(fname)
  tmp = loadsir(fname(i).name);
  dayh99(i,:,:) = tmp;
end

我感兴趣的领域是

   dayh99(i,:,:) = tmp;

tmp 基本上是一个 1360X3600 的数组。问题是我不需要将整个数组存储到 dayh99 中。 (它代表图像数据,我只对该图像的一部分感兴趣。)我还不确定我需要数组的哪一部分,因为我无法绘制数据也无法裁剪它。谢谢。

【问题讨论】:

  • 如果你不知道你想要图片的哪一部分,我们会怎么做?
  • @Pearsonartphoto 你看起来像个摄影师,你一定知道
  • 您可以通过将 [] 分配给数组的一部分来进行裁剪。例如tmp(end-10:end,:) = [];
  • 直到我可以裁剪阵列并看到图像我才知道我需要阵列的哪一部分。
  • 也许是阴谋? figure; imagesc(tmp)

标签: arrays image matlab crop


【解决方案1】:

如果您只想将 tmp 的一部分放入 dayh99,只需使用索引:

j1 = 10
j2 = 12
k1 = 10
k2 = 12

dayh99 = zeros(length(fname), j2-j1, k2-k1)
dayh99(i, :, :) = tmp([j1:j2], [k1:k2])

我也不知道这是否是一个错误,但我不认为有一个名为 loadsir 的函数,除非你创建了它。

【讨论】:

  • 是的,就是用来读取这些“.sir”文件的文件。我会试试的。
  • 是的,我试过了,但没有用。 Example
【解决方案2】:

如何在 matlab 中裁剪数组是对它们进行切片,如下所示:

cropped_array=array(1:10,1:10)

你也可以做一些很酷的事情,比如:

cropped_array=array(1:10:100,1:10:100)

只会将每 10 个变量放入列表中。

【讨论】:

  • 嗯,它从 1:x 开始工作......但当我增加 1 时就不行了。如何调整零以匹配 dayh99? dayh99 = zeros(length(fname),610,620); dayh99(i,:,:) = tmp(240:850,130:750);
  • 基本上,两个数组的大小必须匹配。因此,您需要将相同的区域放入 dayh99 调用中,dayh99(i,240:850,130:750),或者以某种方式抵消它,例如减去第一个数字,例如 dayh99(i,1:611,1:621)
  • 是的,我只是想知道如何调整零点以匹配它。
  • 对不起,我很笨。所以我实际上对这个岛感兴趣。有什么理由为什么情节中有一堆红色?它不会最大化它see here
  • 看不到你的剧情,只能猜色阶差远了……看caxis
猜你喜欢
  • 2017-09-13
  • 2014-07-30
  • 2015-10-25
  • 2016-08-03
  • 2013-04-20
  • 2016-12-05
  • 2012-02-12
  • 1970-01-01
相关资源
最近更新 更多