7

次のコードについて助けが必要です。

if x(:,3)>x(:,4)
output=[x(:,1)-x(:,2)];
elseif x(:,3)<x(:,4)
output=[x(:,2)-x(:,1)];
else
output=NaN
end

サンプルデータは次のとおりです。

matrix x              output
10   5   1   2        -5
10   5   2   1         5     
NaN  1   1   3         NaN

コードを機能させる方法がわかりません。最初の引数だけを取り、else if および else 引数を無視します。助けてください。ありがとうございました。

4

3 に答える 3

5

signさまざまな条件のインデックス作成を避けるために使用します。

B=diff(x,1,2);
B(B(:,3)==0,3) = NaN;
output = B(:,1) .* sign(B(:,3));

または、短くて読みにくい形式で:

B=diff(x,1,2);
output = B(:,1) .* (sign(B(:,3))+0./sign(B(:,3)));
于 2013-09-11T13:32:15.553 に答える