唉,学艺不精啊~~~对不住lz了!刚才把你网盘上的数据下了下来,粗粗的编了个程序,个人觉得理论上没问题,可出来的图形却只能显示你的线形态b,流线却显示不出来,我把figure2的线形态b绘制语句给注释掉了,出来的流线却异常奇怪,看上去全是蓝点。我又试了试改变(xstart,ystart,zstart)(代码中给出的为一个垂直于z轴的平面),出来的也还是蓝点。唉,无语了,可能是我的代码或者思路真的有问题吧,贴出来大家参考一下,也好做个前车之鉴。- clear all;clc;clf;close all
- load a a;
- b=[-0.0001 -0.0009 0.0100
- -0.0000 -0.0009 0.0103
- 0.0001 -0.0009 0.0105
- 0.0001 -0.0009 0.0108
- 0.0002 -0.0009 0.0110
- 0.0003 -0.0009 0.0113
- 0.0003 -0.0009 0.0115
- 0.0004 -0.0009 0.0118
- 0.0005 -0.0008 0.0120
- 0.0005 -0.0008 0.0123
- 0.0006 -0.0007 0.0126
- 0.0007 -0.0007 0.0128];
- a1=a((a(:,3)>=min(b(:,3)))&(a(:,3)<=max(b(:,3))),:);
- clear a;
- a1=sort(a1,1);
- clear a;
- warning off all
- b1=a1(logical(diff(a1(:,1))),:);
- b2=b1(logical(diff(b1(:,2))),:);
- b3=b2(logical(diff(b2(:,3))),:);
- a2=b3(floor(linspace(1,length(b3),100)),:);
- clear a1 b1 b2 b3;
- zmin=min(a2(:,3));
- [ax,ay,az]=meshgrid(a2(:,1),a2(:,2),a2(:,3));
- [u,v,w]=meshgrid(a2(:,4),a2(:,5),a2(:,6));
- [sx,sy,sz]=meshgrid(linspace(min(a2(1:length(a2),1)),max(a2(1:length(a2),1)),20),linspace(min(a2(1:length(a2),2)),max(a2(1:length(a2),2)),20),zmin);
- figure(1)%xoz平面投影
- h=streamline(ax,ay,az,u,v,w,sx,sy,sz);
- set(h,'color','b','linewidth',2);
- hold on
- plot3(b(:,1),b(:,2),b(:,3),'r');
- view(0,0);
- figure(2)%yoz平面投影
- h=streamline(ax,ay,az,u,v,w,sx,sy,sz);
- set(h,'color','b','linewidth',2);
- hold on
- %plot3(b(:,1),b(:,2),b(:,3),'r');
- view(90,0);
复制代码 |