图例 MATLAB 循环

3
我有一个实验室,在那里我需要首先推导出一个四阶质量弹簧阻尼系统的传递函数,然后将其绘制到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

谢谢您的提前预约 :)
1个回答

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接