メインコンテンツ

square

説明

x = square(t) では、時間配列 t の要素に対して、周期 2π をもつ矩形波が生成されます。square は正弦関数と似ていますが、-1 と 1 の値をもつ矩形波が生成されます。

x = square(t,duty) ではデューティ比 duty をもつ矩形波が生成されます。"デューティ比" とは、矩形波が正となる信号サイクルの割合を指します。

すべて折りたたむ

0 から 3π の間に等間隔に並んだ 100 個の数値から成るベクトルを作成します。周期が 2π の矩形波を生成します。

x(t)={(-1)t/π,t=kπkZsign(sin(t)),tkπkZ

t = linspace(0,3*pi)';
x = square(t);

矩形波をプロットして、正弦を重ね合わせます。生成された矩形波では、n が偶数の場合は区間 [nπ,(n+1)π) で 1 の値をとり、n が奇数の場合は区間 [nπ,(n+1)π) で -1 の値をとります。この波形は 0 の値をもちません。

scatter(t,x,".")
hold on
scatter(t,sin(t),".")
hold off
xlabel("t")
xticks((0:3)*pi)
xticklabels(["0" "\pi" "2\pi" "3\pi"])
grid on

Figure contains an axes object. The axes object with xlabel t contains 2 objects of type scatter.

計算を繰り返しますが、今度は -π2π の間に等間隔に並んだ 121 個の数値において square(2*t) を評価します。振幅を 1.15 に変更します。波形をプロットして、同じパラメーターをもつ正弦を重ね合わせます。この新しい波形は、t=0 では負、端点 -π および 2π では正となります。時間値が以前の 2 倍の速さで増加するため、周期は以前の半分である π になります。

t = linspace(-pi,2*pi,121);
x = 1.15*square(2*t);

scatter(t,x,".")
hold on
scatter(t,1.15*sin(2*t),".")
hold off
xlabel("t")
xticks((-1:2)*pi)
xticklabels(["-\pi" "0" "\pi" "2\pi"])
grid on

Figure contains an axes object. The axes object with xlabel t contains 2 objects of type scatter.

R2026a 以降

この例では、任意の振動周期や周波数をもつ矩形波を作成する方法を示します。

10 秒間の範囲で既定の周期が 2π 秒である矩形波を生成します。

x(t)={(-1)t/π,t=kπkZsign(sin(t)),tkπkZ

Fs = 1000;
tEnd = 10-1/Fs;
t = 1/Fs:1/Fs:tEnd;

x1 = square(t);

2.5 秒の周期 T で振動する矩形波を生成します。

xT(t)=x(2πTt)

T = 2.5;
x2 = square(2*pi/T*t);

2 Hz の周波数 F で振動する矩形波を生成します。

xF(t)=x(2πFt)

F = 2;
x3 = square(2*pi*F*t);

矩形波を比較します。波形は、指定した周期や周波数の仕様で振動します。x1、x2、および x3 は、それぞれ 6.28 秒、2.5 秒、および 0.5 秒ごとに振動します。

strips([x1 x2 x3],tEnd,Fs)
xlabel("Time (seconds)")
yticklabels(["x3" "x2" "x1"])

Figure contains an axes object. The axes object with xlabel Time (seconds) contains an object of type line.

1 kHz で 70 ms 間サンプリングされた 30 Hz の矩形波を生成します。37% のデューティ比を指定します。分散 1/100 でホワイト ガウス ノイズを付加します。

t = 0:1/1e3:0.07;
y = square(2*pi*30*t,37) + randn(size(t))/10;

波のデューティ比を計算します。波形をプロットして、デューティ比に注釈を付けます。

dutycycle(y,t)

Figure Duty Cycle Plot contains an axes object. The axes object with xlabel Time (seconds), ylabel Level (Volts) contains 9 objects of type line. One or more of the lines displays its values using only markers These objects represent signal, mid cross, upper boundary, upper state, lower boundary, mid reference, lower state.

ans = 
0.3639

入力引数

すべて折りたたむ

時間配列。ベクトル、行列、または N 次元配列として指定します。square は、サイズが 1 より大きい最初の配列次元 t に沿って動作します。

データ型: single | double

デューティ比。0 ~ 100 の実数スカラーとして指定します。

データ型: single | double

出力引数

すべて折りたたむ

矩形波。ベクトル、行列または N 次元配列として返されます。

拡張機能

すべて展開する

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。

バージョン履歴

R2006a より前に導入

すべて展開する