Matlab 绘制 - 点和向量:向量加减的方法和源码

前言:

一些博客就是转了Matlab 的中文说明,可是他那个说明,他自己都说了不是很对。

本文从实践出发,详细介绍Matlab对\huge \mathbb{R}^{n} 坐标空间的点和向量的绘制方法。


1 点的概念和画法:

1.1 一个平面上的点

plot(2, 3, '.', 'MarkerSize', 16,"Color",'r');

【案】,这个例子里面,绘制了一个红色的点,坐标在笛卡尔坐标的(2,3)。

1.2 一个空间里的点:

fig1 = figure(1)
plot3(1, 2,3, '.', 'MarkerSize', 16,"Color",'r')

1.3 一个空间里面2个点:

fig1 = figure(1)
plot3(1, 2,3, '.', 'MarkerSize', 16,"Color",'r')
hold on
plot3(4, 5,6, '.', 'MarkerSize', 16,"Color",'b')

向量的概念:


2 绘制向量的方法:

2.1 一个二维向量的绘制:

代码绘制了三个不同起点的向量, 

fig1 = figure(1)
scale = 1;
quiver(0,0,2,3,scale,'b');
grid on;
hold on;
quiver(1,1,2,3,scale,'g');
grid on;
hold on;
quiver(4,1,2,3,scale,'r');
grid on;
% 前面的两个数表示二维向量的起点坐标
% 后面的两个数表示二维向量的终点坐标
% scale=1表示对该向量的长度不进行任何伸缩
% 'b'代表蓝色

2.2 一个三维向量的绘制:

scale = 1;
quiver3(0,0,0,1,1,1,scale,'b');
hold on;
quiver3(1,1,0,1,1,1,scale,'r');
hold on;
quiver3(6,1,0,1,1,1,scale,'g');
% 前面的三个数表示三维向量的起点坐标
% 后面的三个数表示三维向量的终点坐标

2.3 向量加减的绘制:

 2.3.1 \huge \mathbb{R}^{^{2}}维度上

fig1 = figure(1)
scale = 1;
quiver(0,0,2,3,scale,'b');
grid on;
hold on;
quiver(2,3,1,3,scale,'g');
grid on;
hold on;
quiver(0,0,2+1,3+3,scale,'r');
grid on;

2.3.2 

 

scale = 1;
quiver3(0,0,0,1,1,1,scale,'b');
hold on;
quiver3(1,1,1,2,2,0,scale,'r');
hold on;
quiver3(0,0,0,3,3,1,scale,'g');

3 使用参考:

1 函数:quiver 和向量场的画法

quiver(X,Y,U,V) plots arrows with directional components U and V at the Cartesian coordinates specified by X and Y.【X,Y为向量在笛卡尔的起点,向量的水平移动单位倍数为U,垂直移动单位倍数为V】【案,向量的理解中重要的概念就是instruction,就是指的向量的各个坐标分量的单位坐标步长数目】

For example, the first arrow originates from the point X(1) and Y(1), extends horizontally according to U(1), and extends vertically according to V(1). By default, the quiver function scales the arrow lengths so that they do not overlap.

【quiver 函数看起来就是遵循这个规则,后面的解释也是验证了这一段,从(1,1)为起点,然后垂直方向延伸【移动】一个单元v(1),然后水平方向延伸一个单元U(1),当然为了,避免向量箭头会重叠,他i自动缩放重叠的向量,这一段暂时还没有找到合适的例子来验证实践】

【官网,给出了一个绘制矢量图的例子,绘制北美风速的矢量图】

load wind.mat;
load('wind','x','y','u','v')
X = x(11:22,11:22,1);
Y = y(11:22,11:22,1);
U = u(11:22,11:22,1);
V = v(11:22,11:22,1);
quiver(X,Y,U,V)
axis equal

这里用到了wind.mat的开源数据:【这个在本文的下一节有介绍】

【Franklin案,这里选取了第11到22行,11到22列的位置的传感器1的位置和风速数据,然后调用quiver进行绘制,我们可以理解为,有12*12个向量组成的一个向量阵】

 【这里箭头的长度,就是向量的长度,比较形象展示了风的速度,同时quiver函数有避免重叠的功能,所以,部分向量的长度应该做了调整】

2 wind data

3-D data on air currents over North America. The data consists of (x,y,z) position components and (u,v,w) velocity components.

File Size: 142 KB

Data Size: Six matrices of size 35-by-41-by-15

load wind.mat
【wind data是一个3维的数据集,是北美空气流动的数据集,包括,xyz的一个位置元素,和一个uvw的速度元素,具体wind数据的使用,在MT的一个风能的视频介绍里面有很详细的解释】

用MT load 数据后,我们看的wind data的具体情况:

确实是6个矩阵,每个矩阵都是35-by-41-by-15

 我们先看一下位置数据x矩阵,Y矩阵,U矩阵:

可以看到表征位置的,XYZ的矩阵数据,在不同的行上X的值相同,Y值不同,但是,在Page 上对应的话,都是相同,有理由相信Page就是传感器的ID,大约有15个传感器。

然后,U,V的值为传感器测的不同反向上的风速等参数,这个数据随机性比较大。

XYU
val(:,:,1) =val(:,:,5) =val(:,:,1) =val(:,:,10) =val(:,:,1) =val(:,:,2) =
 列 1列 1
  列 1  列 1  列 1  列 1
70.187970.1879
70.187970.187917.499917.49990.5685-2.8479
70.187970.187918.749918.74990.5685-2.8479
70.187970.187919.999919.99990.5685-2.8479
70.187970.187921.249921.24990.8791-2.2267
70.187970.187922.499922.49991.1897-1.295
70.187970.187923.749923.74991.5003-0.3632
70.187970.187924.999924.99991.50030.5685
70.187970.187926.249926.24992.12142.1214
70.187970.187927.499927.49993.05313.3637
70.187970.187928.749928.74994.6066.1589
70.187970.187929.999929.99994.6067.4013
70.187970.187931.249931.24994.91669.2647
70.187970.187932.499932.49994.916610.507
70.187970.187933.749933.74995.227213.9234
70.187970.187934.999934.99995.227215.4763
70.187970.187936.249936.24995.227215.4763
70.187970.187937.499937.49995.537817.0292
70.187970.187938.749938.74996.158920.135
70.187970.187939.999939.99995.537819.8244
70.187970.187941.249941.24993.363718.2715
70.187970.187942.499942.49991.500313.9234
70.187970.187943.749943.74990.879110.507
70.187970.187944.999944.99990.25795.2272
70.187970.187946.249946.2499-0.67381.5003
70.187970.187947.499947.4999-2.2267-3.1584
70.187970.187948.749948.7499-3.1584-5.6431
70.187970.187949.999949.9999-3.7796-5.6431
70.187970.187951.249951.2499-4.4008-6.8854
70.187970.187952.499952.4999-4.7113-8.4383
70.187970.187953.749953.7499-3.7796-8.1277
70.187970.187954.999954.9999-2.5373-7.196
70.187970.187956.249956.2499-1.295-6.2642
70.187970.187957.499957.4999-0.9844-4.7113
70.187970.187958.749958.7499-1.295-3.1584
59.999959.9999-2.5373-2.8479
  列 2  列 2
  列 2  列 2  列 2  列 2
71.790771.7907
71.790771.790717.499917.49990.5685-2.5373
71.790771.790718.749918.74990.5685-2.5373
71.790771.790719.999919.99990.8791-2.5373
71.790771.790721.249921.24990.8791-1.6055
71.790771.790722.499922.49991.1897-0.9844
71.790771.790723.749923.74991.50030.2579
71.790771.790724.999924.99991.18970.5685
71.790771.790726.249926.24992.12143.0531
71.790771.790727.499927.49993.67435.5378
71.790771.790728.749928.74993.36376.1589
71.790771.790729.999929.99993.36377.0907
71.790771.790731.249931.24994.29558.6436
71.790771.790732.499932.49994.91669.5753
71.790771.790733.749933.74995.227212.0599
71.790771.790734.999934.99995.537816.408
71.790771.790736.249936.24994.916617.3398
71.790771.790737.499937.49994.916616.408
71.790771.790738.749938.74994.60616.7186
71.790771.790739.999939.99994.60617.0292
71.790771.790741.249941.24994.295517.0292
71.790771.790742.499942.49990.568512.0599
71.790771.790743.749943.74991.50039.5753
71.790771.790744.999944.99990.87915.5378
71.790771.790746.249946.24990.25792.432
71.790771.790747.499947.4999-1.6055-2.8479
71.790771.790748.749948.7499-2.5373-5.3325
71.790771.790749.999949.9999-2.8479-5.6431
71.790771.790751.249951.2499-2.8479-6.2642
71.790771.790752.499952.4999-3.469-6.8854
71.790771.790753.749953.7499-2.8479-6.8854
71.790771.790754.999954.9999-1.295-6.2642
71.790771.790756.249956.2499-0.6738-4.4008
71.790771.790757.499957.4999-2.2267-3.1584
71.790771.790758.749958.7499-2.8479-3.7796
59.999959.9999-2.8479-2.8479

参考:

Quiver or vector plot - MATLAB quiver (mathworks.com)

 matlab中向量的绘制方法_陈腾飞同学的博客-CSDN博客_matlab画向量

Matlab 画向量图和平面图 - 知乎 (zhihu.com)

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MATLAB中,可以使用quiver函数进行向量绘制和操作。该函数可以绘制箭头表示的向量,并且支持向量的加法和减法操作。当进行两个向量的加法和减法时,这两个向量的元素必须具有相同的类型和数量。可以通过指定箭头的起始和长度,来表示向量的大小和方向。 例如,假设我们有两个向量v1和v2,可以使用quiver函数绘制这两个向量,并进行加法和减法操作。假设v1 = [1, 2],v2 = [-3, 4],我们可以使用以下代码进行绘制和操作: ```matlab v1 = [1, 2]; v2 = [-3, 4]; figure; hold on; % 绘制v1向量 quiver(0, 0, v1(1), v1(2), 'r', 'LineWidth', 2); % 绘制v2向量 quiver(0, 0, v2(1), v2(2), 'b', 'LineWidth', 2); % 绘制v1 + v2向量 v_sum = v1 + v2; quiver(0, 0, v_sum(1), v_sum(2), 'g--', 'LineWidth', 2); % 绘制v1 - v2向量 v_diff = v1 - v2; quiver(0, 0, v_diff(1), v_diff(2), 'm--', 'LineWidth', 2); axis equal; legend('v1', 'v2', 'v1 + v2', 'v1 - v2'); ``` 在这个例子中,我们首先绘制了v1和v2两个向量,然后使用加法操作得到了v1 + v2向量,并使用减法操作得到了v1 - v2向量。最后,我们使用axis equal来使坐标轴的比例相等,并使用legend添加图例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Matlab 绘制 - 向量向量加减方法源码](https://blog.csdn.net/yellow_hill/article/details/124996309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [MATLAB向量的运算](https://blog.csdn.net/std86021/article/details/127937682)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Franklin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值