0

三角記号を表す関数を作成しました。この関数はベクトルでは機能しません。ベクトル x を評価したい:

x=[-2:0.01:2]

答えをベクトル y に保存します。この目的のために、次のコードを思いつきました。

for i=1:400, y(i) = triangle(x(i))

私がプロットしたAnsを取得した後、プロットを使用しています。この場合はうまくいきましたが、時間のシフトと縮小の影響を観察することに興味があるので、使用しようとすると次のように言います:

for i=1:200, y(i) = triangle(x(2*i))

ベクトル x と同じ長さではないベクトル y を取得し、それらをプロットすることさえできません...それを達成する簡単な方法はありますか? 答えをプロットするにはどうすればよいですか?

ここに私の機能があります:

function [ out1 ] = triangle( input1 )
if abs(input1) < 1,
    out1 = 1 - abs(input1);
else 
    out1 = 0;
end

end
4

1 に答える 1

0

yfor各ループの反復回数が異なるため、ループごとに異なる長さになります。以下の例では、同じforループを使用して、対応する x の値で y2 をプロットします。は既に matlab で定義されているため、以下の例でiは変更しました。t

clear all
x=[-2:0.01:2];

for t=1:400
    y(t) = triangle(x(t));
end

for t=1:200
    y2(t) = triangle(x(2*t));
end

または、y2 を同じ範囲でプロットしたい場合は、x のサイズを大きくすることができます。

clear all
x=[-2:0.01:8];

for t=1:400
    y(t) = triangle(x(t));
end

for t=1:400
    y2(t) = triangle(x(2*t));
end

plot(x(1:length(y)),y,'r')
hold on
plot(x(1:length(y2)),y2,'b')
于 2013-04-26T17:40:17.087 に答える