2014-04-19 21 views
0

我是一個在MatLab中編寫代碼的新人,這對我的研究非常有用。我有很多列的csv文件,但只對其中兩個感興趣,比如列X和Y,都是數字。我需要做的是從Y欄中選取具有近似相應數字的某個數字。例如,選擇X列中與Y最接近的數字。我可以使用MatLab嗎? 我感謝任何幫助。根據MatLab中其他列的相應編號選擇某些編號

+0

什麼是「最接近54對應的Y」?你能提供一個小的輸入輸出組合來解釋你的情況好一點嗎?這是假設一些X,一些Y和你期望的輸出。 – Divakar

+0

我的X未知,我想根據我的Y選擇它,但我不知道確切的Y數。例如,我希望我的Y最接近54,而我的數據表中的實際數字是54.001。我需要選擇與此相對應的X. – Bob

回答

0

假設你有你的矩陣data這樣的:

data = 

    0.6293 -2.5788 -0.9027 53.0100 -0.7203 
    0.3602 2.0267 0.2537 54.5300 -0.0149 
    0.0870 -0.7028 1.2209 54.6034 0.5088 
    -1.1552 1.5505 0.3589 54.0044 1.1467 
    1.7230 -0.5437 0.1975 56.3978 -0.5802 
    1.9416 0.7137 0.2764 55.0810 -0.2298 
    0.4837 -0.1987 0.8526 53.6421 -0.4461 
    -0.1257 1.7165 -0.8384 53.7798 1.3852 
    0.6433 0.6902 -1.1979 53.9323 -1.2776 
    1.6593 -0.5343 -1.3725 52.8364 -0.0738 

你想找到X = 2列中的值,其中在同一行的價值,在Y = 4列,最接近54.你可以這樣做它是這樣的:

X = 2; % Index of the column to retrieve the value from 
Y = 4; % Index of the column to find the value nearest to 54 

[~,idx] = min(abs(data(:,Y) - 54)) 
data(idx,X) 

這將使你:

ans = 

    1.5505 

它正在做的是取得列Y和54之間的絕對差異,並檢索具有最小差異的元素的行的索引。然後,此索引用於檢索該行的值,列X

+0

當我輸入X = 2;它只給出一個具有指定數字(2)的矩陣,而不是選擇列。這是爲什麼? – Bob

+0

我不知道,它在這裏處理這些數據。你的數據究竟代表了什麼?矩陣?單元陣列? –

+0

變量'data'只是一個例子,將其替換爲您的實際變量。另外,我假設它是一個MxN矩陣(不是單元陣列或其他任何東西)。 –