2016-09-19 83 views
1

我有一個包含數字的矩陣1x5000。現在我有興趣從矩陣的不同位置獲取數值,更準確地說是矩陣的六個不同位置。該地方應根據長度,這些都是數字我想出去:在不同設置位置的矩陣中獲取數字

  1. 在基質長度的1/6
  2. 數矩陣中的長度的2/6
  3. 的數字在基體長度的4/6的長度矩陣
  4. 數的3/6
  5. 數矩陣中的長度
  6. 數的5/6在基質長度的6/6

這些值可以打印出另一個矩陣,所以假設矩陣是1x5000,3/6會給矩陣中間的數字。我是Matlab新手,因此非常感謝您的幫助!

+1

5000是不通過6 – excaza

+0

首先整除,5000是不整除6.其次:'X(小區(linspace(1,5000,6))' –

+0

@。 StewieGriffin我知道,所以這個必須解決,只是通過坦克可以整除的下一個位置。 –

回答

0

在MATLAB冒號表示法提供了一種簡單的方法來提取的範圍內V族元素的:

v(3:7) %Extract the third through the seventh elements 

你既可以手動輸入範圍或使用函數來級分轉化爲合適的範圍

1

由於你的問題不清楚,我可以嘗試給你一個例子。 首先您可以使用numel函數來獲取矩陣的大小。

在Matlab中很容易獲得必要的元素:如果知道它的編號(索引),則可以直接尋址到任何元素。所以: x(100)返回第100個元素。 現在你有了大小,並知道該怎麼做。最後一刻 - 如果numel(x)/6返回非整數,該怎麼辦?

您可以使用舍入函數:ceil,floorround

index = ceil(numel(x)/6) %if you want NEXT element always 
result = x(index) 

下一步:有很多方法來分割數據。例如現在你只有6個數字(1/6,2/6等等),但如果有1000個數字呢?你不能手動完成。所以你可以使用for循環,或者你可以使用索引矩陣或完美comment Stewie Griffin

我的例子:

divider = [6 5 4 3 2 1] % lets take 1/6 1/5 1/4 1/3 1/2 and 1/1 
ind = ceil(numel(x)./divider) 
res = x(ind)