2012-11-20 71 views
1
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 

我感兴趣的领域是裁剪一个Matlab数组?

dayh99(i,:,:) = tmp; 

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

+1

如果你不知道你想要什么部分的图像,我们会怎样? – PearsonArtPhoto

+0

@Pearsonartphoto你看起来像一个摄影师,当然你必须知道 –

+0

你可以通过将[]分配给数组的一部分来裁剪。例如tmp(end-10:end,:) = []; – grantnz

回答

0

如果你想要把一个刚刚进入dayh99 tmp中的一部分,只是使用索引:

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

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

我也不知道这是一个错误,但我不认为这是一个功能称为loadsir,除非你创建它。

+0

是的这是一个用来读取这些“.sir”文件的文件。我会尝试的。 – Supa

+0

是的,我试过这个,但没有工作。 [例子](http://img805.imageshack.us/img805/434/4f8f6f9e100446ddadf3227.png) – Supa

0

如何在MATLAB你农作物阵列是由切片他们,就像这样:

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

你也可以做很酷的东西,如:

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

将只放每10可变进榜。

+0

它的工作原理是从1:x ...但不是当我增加1.我如何调整0以匹配dayh99? 'dayh99 =零(长度(fname),610,620); dayh99(i,:,:) = tmp(240:850,130:750);' – Supa

+0

基本上,两个数组的大小必须匹配。所以你需要把相同的区域放在dayh99调用中,'dayh99(i,240:850,130:750)',或者以某种方式抵消它,但是减去第一个数字,比如'dayh99(i,1 :611,1:621)'。 – PearsonArtPhoto

+0

是的,我只是想知道如何调整零来匹配它。 – Supa