y = sin(2x)のy値を生成したい場合は、次のことができることを理解しています。
y = sin(0:.01:2*2);
ただし、xが1の倍数またはy = 1のsqrt(2)でない限り、y = 0の値を生成したい場合、その問題にどのようにアプローチしますか?値の周りにウィンドウを作成し、ステップサイズがそれをキャプチャするのに十分小さいことを期待する必要がありますか?ありがとうございました。
y = sin(2x)のy値を生成したい場合は、次のことができることを理解しています。
y = sin(0:.01:2*2);
ただし、xが1の倍数またはy = 1のsqrt(2)でない限り、y = 0の値を生成したい場合、その問題にどのようにアプローチしますか?値の周りにウィンドウを作成し、ステップサイズがそれをキャプチャするのに十分小さいことを期待する必要がありますか?ありがとうございました。
論理条件を使用します。たとえば、いくつかから開始すると、この条件のyの値が生成され、他の場所ではゼロが生成されますy(x)
。y(y==1)
使用できるより一般的な条件などについてmod
はismember
、整数を浮動小数点数に一致させるというもう1つの問題があります。最初に丸めてから、上記の関数を使用する必要があります。
わかったよ。繰り返しますが、浮動小数点演算は等式を行わないため、例は機能しません。また、目立たない間隔で関数をサンプリングしているため、デルタ関数をキャプチャするのは困難です。したがって、このようにしないでください。代わりに、標準の区分的関数を探している場合は、次のアイデアがあります。
x = 0:.01:2;
x1_locations = x < 1;
x2_locations = ~x;
y = zeros(size(x));
y(x1_locations) = sin(2*x(x1_locations));
y(x2_locations) = cos(3*x(x2_locations));
繰り返しになりますが、これが機能しない理由は、たとえば、x1_locations = (floor(x/sqrt(2)) == x/sqrt(2))
これを表示するxの正確な位置に到達することは決してないためです。また、到達したとしても、浮動小数点表現の丸め誤差により、場所を逃します。近似に問題がない場合は、関心のある値との最大絶対差を使用してください。