![untitled.jpg](https://www.mathworks.com/matlabcentral/answers/uploaded_files/240349/untitled.jpeg)
Looping random number arrays over a x,y meshgrid
2 次查看(过去 30 天)
显示 更早的评论
Hi there, I'm trying to get the code below loop through the random number arrays v_t, v_tr, v_tt, t_l and t_ul for each value of x and y on the grid.
However. It does not work. I used the same code in a 2D situation, so with only values on the X-axis, where it did work.
Any thoughts on how to improve this code to get it to work in a 3D situation?
L=400 %km
v_t = unifrnd(30,50,10,1)
v_tr = unifrnd(90,110,10,1)
v_tt = unifrnd(70,90,10,1)
t_l= unifrnd(0,(1/6),10,1)
t_ul= unifrnd(0,(1/6),10,1)
%
% compute equations for multiple x,y values
[x,y]=meshgrid(30:50,100:150)
t_tank1=(t_l+x./v_tt+t_ul)+(L-x)./v_t
t_tank2=(t_l+x./v_tt+t_ul)+x./v_tr +(t_l+y./v_tt+t_ul)+(L-y)./v_t
t_tank3=(t_l+x./v_tt+t_ul)+x./v_tr +(t_l+y./v_tt+t_ul)+y./v_tr+(t_l+L/v_tt+t_ul)
t_operationpart=max(t_tank1,t_tank2)
t_operation=max(t_operationpart,t_tank3)
% plot t_operation
surf(x,y,t_operation)
xlabel('x (km)')
ylabel('y (km)')
0 个评论
回答(1 个)
Thiago Henrique Gomes Lobato
2019-9-29
I'm not sure how the equation is supposed to be defined but the main problem here is that you're multiplying arrays of different dimensions. If instead of generating 10 random numbers you generate 51 (and make a little adjustment in t_tank3) , the code will work. Maybe it worked before with only 2 dimensions because matlab would expand the array properly, while now you have conflicting dimensions.
L=400; %km
v_t = unifrnd(30,50,51,1); % 10 to 51 for matching dimensions
v_tr = unifrnd(90,110,51,1);
v_tt = unifrnd(70,90,51,1);
t_l= unifrnd(0,(1/6),51,1);
t_ul= unifrnd(0,(1/6),51,1);
%
% compute equations for multiple x,y values
[x,y]=meshgrid(30:50,100:150);
t_tank1=(t_l+x./v_tt+t_ul)+(L-x)./v_t;
t_tank2=(t_l+x./v_tt+t_ul)+x./v_tr +(t_l+y./v_tt+t_ul)+(L-y)./v_t;
%here L./v_tt, to make it element-wise
t_tank3=(t_l+x./v_tt+t_ul)+x./v_tr +(t_l+y./v_tt+t_ul)+y./v_tr+(t_l+L./v_tt+t_ul);
t_operationpart=max(t_tank1,t_tank2);
t_operation=max(t_operationpart,t_tank3);
% plot t_operation
surf(x,y,t_operation)
xlabel('x (km)')
ylabel('y (km)')
![untitled.jpg](https://www.mathworks.com/matlabcentral/answers/uploaded_files/240349/untitled.jpeg)
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Directed Graphs 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!