2016-07-26 16 views
0

に私は機能を実行するスクリプト書いた:これで移動が左または右の点からMATLAB

eval(['VCathodicOh3(2,i) =' 'min(' 'data_' varnames{1} '(49000:51000,9));']) 

を、「VCathodicOh3」の配列に編成されている別の変数に列9からデータを取ることによって行われます(それらは1:100000行×10列です)。

minを見つけ出すのではなく、この関数に何かを加えてminをとり、そのminがある点を見つけて、その点の左側に4点移動したいと思っています。

例:

 min(data_var(49000:51000,9)) = -3.190 

、その後(-3.190、50250)言うことができますが、あなたが分を見つけた時点です。スクリプトでその点-4(50246、y)を移動し、新しい対応する値を教えてください。

答えて

0

minの2番目の出力を使用して、最小値のインデックスを示すことができます。この値を4ずつ減らして左にシフトさせることができます。

a = magic(10); 
[~, ind] = min(a); 

[row,col] = ind2sub(size(a), ind); 

newval = a(row, col-4) 

側の注意点として、私は本当にのような動的変数名を使用して落胆します:あなたは、2D行列を持っている場合は

a = [5 3 2 1 0] 
[~, ind] = min(a); 

newval = a(ind-4) 

、あなたはind行/列とデクリメントに線形インデックスに変換することができますセル配列やstructなどのより適切なデータ構造を使用してください。 evalの使用法は、私があなたが気づいたと確信しているので、すぐに手を抜けることがあります。

関連する問題