stream2

stream2是一個用於電腦系統的函式。

函式簡介

函式功能:MATLAB函式stream2使用插值算法生成繪製2-D流線圖所需數據。

語法格式:

XY = stream2(x,y,u,v,startx,starty)

生成向量(u,v)的流線圖數據。(x,y)定義了向量(u,v)的坐標。(x,y)通常是通過調用meshgrid函式生成的格線數據。(startx,starty)定義了流線的起點。在MATLAB幫助文檔MATLAB/User Guide/3-D Visualization/Volume Visualization Techniques/Visualizing Vectro Volume Data/Specifying Starting Points for Stream Plots對指定起點有更詳細的說明。(MATLAB R2010a)

返回值XY是一個元胞數組, 元胞數組中每個元素都表示一個點的坐標。可以使用cell2mat來查看其中的數據。

XY = stream2(u,v,startx,starty)

這種調用格式等價於以下:

>>[m,n] = size(u);

>>[x,y] = meshgrid(1:n,1:m);

>>XY = stream2(x,y,u,v,startx,starty);

XY = stream2(...,options)

options指定繪製流線圖時的一些選項。比如,步長、流線圖中點的個數。步長默認值0.1,點的個數默認值10000。

這樣生成流線圖數據後, 就可以使用streamline(XY)來繪製出流線圖。

相關函式:coneplot, stream3, streamline

程式示例

在二維平面上繪製一個正電荷的電場線圖

close all; clear; clc;

k = 8.9875e+9; % 比例係數

e = 1.602e-19; % 一個電子帶電量絕對值

e_r = 2.8e-15; % 電子的半徑

ke = k .* e; % k by e

% 指定區間: d=<x,y<=d,並生成格線數據

d = -e_r*40:e_r:e_r*40;

[x, y] = meshgrid(d);

% 計算電位

V_max = ke / e_r; % 正電荷的表面電勢最大,無窮遠處電勢為0

V = ke ./ sqrt(x.^2 + y.^2);

V(V==Inf) = V_max;

V(V>V_max) = V_max;

% 求電勢的梯度,即電場強度

[E_x, E_y] = gradient(-V);

% 繪製電場線分布

t = 0:2*pi/20:2*pi;

sx = e_r * cos(t);

sy = e_r * sin(t);

hold on;

plot(0, 0, 'ro', 0,0, 'r+'); % 標出正電荷

XY = stream2(x, y, E_x, E_y, sx, sy);

streamline(XY)

contour(x, y, V, linspace(min(V(:)), max(V(:)), 60));

axis([min(d), max(d), min(d), max(d)]);

hold off;

其中,代碼段:

XY = stream2(x, y, E_x, E_y, sx, sy);

streamline(XY)

等價於:

streamline(x, y, E_x, E_y, sx, sy);

相關詞條

熱門詞條

聯絡我們