matlab画立体仓库库位图_Matlab 画向量图和平面图

本文介绍了如何使用Matlab自定义函数来便捷地绘制向量图和平面图,包括画单个向量图、3xn矩阵列向量图以及由两个向量确定的平面。通过这些函数,可以更方便地展示立体仓库库位的几何关系。
摘要由CSDN通过智能技术生成

69c35920230e75b64ada2b539f557b51.png

使用matlab里面的quiver函数画单个的向量图和使用surf画平面图十分不方便,所以自己写了3个函数,以便快捷的画简单的向量图和平面图。

  1. 画向量图函数
function plotv3(v_start, v_end, v_size, v_color)
% This function is used to plot 3d vectors.
%
% Parameters:
%   v_start: the start point of a vector
%   v_end: the end point of a vector
%   v_size: the vector line width, optional
%   v_color: the vector's color, optional
%
% Examples:
%   plotv3([0,0,0],[1,1,1]), plot a vector
%   plotv3(p1, p2, 2), plot a vector,line width is 2
%   plotv3(p1, p2, 2, 'g'), plot a vector, line width is 2, color is green
%
% @Author: ERYUESANHI 
% @Date: 2020-11-03 20:25:48 

    v_style = quiver3(v_start(1),v_start(2),v_start(3), ...
                      v_end(1), v_end(2), v_end(3));
    v_style.MaxHeadSize = 0.3;
    v_style.LineWidth = 1.5;
    v_style.AutoScale = 'off';
    if nargin > 2
       v_style.LineWidth = v_size;
    end
    if nargin >3
        v_style.Color = v_color;
    end
    if nargin > 4 
        fprintf("Most 4 inputsn");
    end
    
end

66990b283c704abc5e329ac69faa6c9a.png

2. 画3xn矩阵的列向量图

function plotmv3(m)
% This function is used to plot 3d column vectors of a 3xn matrix.
%
% Parameters:
%   m: a 3xn matrix.
%
% Examples:
%   plotmv3(m);
%
% @Author: ERYUESANHI
% @Date: 2020-11-03 21:25:28 

    [row, col] = size(m);
    
    if row ~= 3
       fprintf("error! not 3 dimention");
    end
    
    for i=1:col
        v_style = quiver3(0,0,0, m(1,i), m(2,i), m(3,i));
        v_style.MaxHeadSize = 0.3;
        v_style.LineWidth = 1.5;
        hold on;
    end  
end

8b9980be026513898e6db9f945e6de09.png
正交矩阵的列向量

3. 画两个向量确定的平面

function plotvp(v1, v2, p_color, p_alpha, p_edge_color)
% This function is used to plot a plane formed by to vectors.
%
% Parameter:
%   v1: vector 1
%   v2: vector 2
%   p_color: plane color, optional
%   p_alpha: plane transparency, optional
%   p_edge_color: plane grid color, optional
%
% Examples:
%   plotvp([1,2,3],[2,3,4]), plot a plane formed by [1,2,3]' and [2,3,4];
%   plotvp(v1,v2,'r'), the plane is red;
%   plotvp(v1,v2,'r','0.5'), the red plane's alpha is 0.5;
%   plotvp(v1,v2,'r','0.5','g'), the plane with green grids.
%
% @Author: ERYUESANHI
% @Date: 2020-11-03 20:25:48 

    syms x y z;
    n = cross(v1,v2);
    if n(3) ~= 0
        z = (-n(1)*x - n(2)*y)/n(3);
    else
        z = 0;
    end
    fs = fsurf(x,y,z);
    fs.FaceColor = '#cdcdcd';
    fs.FaceAlpha = 0.5;
    fs.EdgeColor = 'none';
    
    if nargin > 2
        fs.FaceColor = p_color;
    end
    if nargin > 3
        fs.FaceAlpha = p_alpha;
    end
    if nargin > 4
        fs.EdgeColor = p_edge_color;
    end
    if nargin > 5
        fprintf("Most 5 inputsn");
    end
end

e7e023d3876934636e71bdcb273f8904.png

一个综合示例:

clear; clc; close all;

O = [0,0,0];

e1 = [1,0,0]';
e2 = [0,1,0]';
e3 = [0,0,1]';

plotvp(e1,e2,'g',0.3);  % 画e1,e2张成的平面
hold on
plotvp((e1+e2+e3),[2,4,0],'r',0.3) % 画e1+e2+e3和[2 4 0]'所张成的平面
plotv3(O,[2 4 0]) % 画[2 4 0]向量
plotmv3([e1,e2,e3]) % 画三个基向量
plotv3(O,(e1+e2+e3)) % 三个基向量的和向量
plotv3(O,(e1+e2)) % e1和e2的和向量, e1+e2+e3在e1,e2所在平面的投影
plotv3((e1+e2),[1 1 1]-[e1+e2]) % e1+e2的正交向量
axis([-1.5,1.5,-1.5,1.5,-0.5,3])

209f6ed5b9087eb7294023c6e8027670.png

9b5f53d191cd5e910e8336677793b1d6.png
MATLAB可以用来解决位分配问题。位分配问题是一个优化问题,需要找到最佳的位分配方案,以最大化物品存储数量或最小化物品存储成本。 MATLAB提供了强大的数学建模和优化工具箱,可以用来建立位分配模型,并利用优化算法求解最佳方案。首先,需要定义位分配的目标函数,可以根据具体情况选择最大化存储数量或最小化存储成本作为目标。然后,可以利用MATLAB提供的数学建模功能,将位、产品、容量等作为变量,并约束各个变量之间的关系,例如位的容量限制、产品的需求等。 接下来,可以使用MATLAB的优化工具箱中的优化函数,例如fmincon、ga、linprog等来求解位分配问题。这些优化函数可以根据目标函数和约束条件,搜索最优解,找到使目标函数最大或最小的变量取值组合。在求解过程中,可以根据具体需求选择适当的优化算法,并使用MATLAB提供的优化参数调整函数的性能。 最后,可以利用MATLAB的可视化功能,将最佳位分配方案以表的形式展示出来,便于理解和分析。MATLAB提供了丰富的绘函数,可以将位、产品、容量等信息绘制在二维或三维形中,帮助用户直观地了解最佳方案的布局和利用率。 综上所述,MATLAB提供了强大的数学建模和优化工具,可以用来解决位分配问题。通过定义目标函数、约束条件,利用优化算法搜索最佳解,并利用可视化功能展示最佳方案,可以得到满足需求的位分配方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值