图例MATLAB For Loop

时间:2018-11-13 22:28:38

标签: matlab

我有一个实验室,我需要首先为四阶质量弹簧阻尼器系统提供传递函数,然后绘制该函数以获得200N阶跃响应。 减震器阻尼系数是一个变量,我们将以图形方式绘制一系列值,然后选择最佳值(即最接近临界阻尼响应的值)。

我已经完成了所有上述任务,按预期进行了工作,也许我只是在这里呆呆了,但我无法使图例达到预期的效果。 理想情况下,我希望对循环的这种影响说“ B =“ B的当前值”。

import cv2
import numpy as np

img = cv2.imread('IPMP.jpg', 1)

height = img.shape[0]
width = img.shape[1]
print(height, width)
out = np.ones((height, width, 3), np.uint8)

def shearing(img, Bx, By):
    for y in range(height):
        for x in range(height):
            img[int(x * By + y), int(x + y * Bx)] = img[x, y]

shearing(img, -0.5, 0)

cv2.imshow('shearedImage', img)
cv2.waitKey(0)
cv2.destryAllWindows()

预先感谢:)

1 个答案:

答案 0 :(得分: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)