图形图例MATLAB For Loop

Max*_*dor 3 matlab

我有一个实验室,我需要首先为四阶质量弹簧阻尼系统驱动传递函数,然后将其绘制成200N阶跃响应.缓冲器阻尼系数是一个变量,我们将以图形方式绘制一系列值,并选择最佳值即(最接近临界阻尼响应的值).

我已经按照预期完成了上述所有任务,也许我只是在这里愚蠢但我无法让图形图例按照需要运行.理想情况下,对于循环的迭代,我想说"B ="B的当前值.

%Initialisations
close all;format short g;format compact;clc;clear;
k1=500000;
k2=20000;
m1=20;
m2=400;
opt=stepDataOptions('StepAmplitude',200);
for (b = [1000:1000:15000])
Hs = tf([b k2],[(m1*m2) (b*(m1+m2)) (k2*(m1+m2)+k1*m2) (b*k1) (k1*k2)]);
hold on;
stepplot(Hs,opt)
title("Shock Absorber Performance to Step Input");
ylabel("Force (N)");
legend;
hold off;
end
Run Code Online (Sandbox Code Playgroud)

提前致谢 :)

rin*_*ert 5

虽然不是一个干净的解决方案,但这可行:

close all;format short g;format compact;clc;clear;

k1=500000;
k2=20000;
m1=20;
m2=400;
opt=stepDataOptions('StepAmplitude',200);

% initialize a cell array that will hold the labels
labels = {};

for (b = [1000:1000:15000])
    Hs = tf([b k2],[(m1*m2) (b*(m1+m2)) (k2*(m1+m2)+k1*m2) (b*k1) (k1*k2)]);
    hold on;
    stepplot(Hs,opt)
    title("Shock Absorber Performance to Step Input");
    ylabel("Force (N)");
    hold off;

    % set the label name, with the value for b
    labels{end+1} = ['B = ' num2str(b)];
end

% create the legend with the labels
legend(labels)
Run Code Online (Sandbox Code Playgroud)