我已经尝试在MATLAB中绘制这个等式:
0.9486 - (1.0544 * w0)+(0.8961 * w1)+(w0 * w1)+ 1.1 *(w0 ^ 2 + w1 ^ 2)
w0的值为0至4,w1为-4至0
我需要在MATLAB中将其绘制为曲面,因此我编写了以下代码:
w0=(0:0.2:4); % y-axis
w1=(0:-0.2:-4); % x-axis
J=zeros(length(w0),length(w1)); % Matrix to be plotted on z-axis as a
surface
i=0; % indices for creating J
j=0; % indices for creating J
for w0=0:0.2:4
j=j+1;
i=i+1;
for w1=0:-0.2:-4
J(i,j)=0.9486-1.0544*w0+0.8961*w1+w0.*w1+1.1*(w0.*w0+w1.*w1);
% Equation to be implemented
end
end
w0=(0:0.2:4);
w1=(0:-0.2:-4);
%w0 and w1 created again as for loops reduced them to their
final value of 4 and -4.
mesh(w1,w0,J) %to create surface plot
ax = gca;
ax.XDir = 'reverse'; %reversing the axis as required in the task
虽然创建了曲面,但矩阵J未被精确填充。确实应该是21x21(w0和w1都是1x21向量),但J中的值仅出现在对角线上,其余为零。
我不能将w0和w1作为索引,因为它们包含小数,并且将i和j作为这样的索引(在第一个for循环之后)是我可以获得J的21x21矩阵大小的唯一方法。
这是所需表面的图像:
这是我到目前为止能够绘制的表面图像:
任何人都可以帮我正确填充J矩阵,以便重新创建正确的曲面吗?
答案 0 :(得分:2)
我没有仔细查看您的代码,但
.*
和.^
element-wise operations(*
和^
是矩阵乘法和矩阵幂,所以不是您想要的。 / LI>
这是我怎么做的。这使用implicit singleton expansion,这需要Matlab R2016b或更高版本:
w0=(0:0.2:4).'; % y-axis
w1=(0:-0.2:-4); % x-axis
J = 0.9486 - (1.0544.*w0) + (0.8961.*w1) + (w0.*w1) + 1.1*(w0.^2+w1.^2);
mesh(w1,w0,J)
xlabel w1
ylabel w0
ax = gca;
ax.XDir = 'reverse';
答案 1 :(得分:1)
fsurf()功能相同的工作。这是代码......
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/second_category_rcV"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher_background" />
<ProgressBar
android:id="@+id/second_progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|center_vertical"
android:indeterminateBehavior="repeat"
android:visibility="visible" />
</LinearLayout>
</android.support.v4.widget.SwipeRefreshLayout>