Arrays 理解Matlab代码
我有一些代码,我一直在尝试对其进行一些小的调整。它使用Arrays 理解Matlab代码,arrays,matlab,if-statement,variable-assignment,Arrays,Matlab,If Statement,Variable Assignment,我有一些代码,我一直在尝试对其进行一些小的调整。它使用fgets从一行中加载单个字符,并使用它为3D绘图中的点着色。所以应该是这样的 a p p n c 然后使用其他数据文件指定x、y、z点以给出这些。结果是一个非常漂亮的3D图 我对输入文件进行了编辑,使其可读 0 1 1 0 2 2 0 我要它把数字涂成同样的颜色 这就是我到目前为止在代码方面取得的进展: function PlotCluster(mcStep) clear all filename = input
fgets
从一行中加载单个字符,并使用它为3D绘图中的点着色。所以应该是这样的
a
p
p
n
c
然后使用其他数据文件指定x、y、z点以给出这些。结果是一个非常漂亮的3D图
我对输入文件进行了编辑,使其可读
0
1
1
0
2
2
0
我要它把数字涂成同样的颜色
这就是我到目前为止在代码方面取得的进展:
function PlotCluster(mcStep)
clear all
filename = input('Please enter filename: ', 's');
disp('Loading hopping site coordinates ...')
load x.dat
load y.dat
load z.dat
temp = z;
z = x;
x = temp;
n_sites = length(x);
disp('Loading hopping site types ...')
fp = fopen([filename]);
data = load(filename); %# Load the data
% Plot the devices
% ----------------
disp('Plotting the sample surface ...')
figure
disp('Hello world!')
ia = data == 0;
in = data == 1;
ip = data == 2;
disp('Hello Again')
plot3(x(ia),y(ia),z(ia),'b.') %,'MarkerSize',4)
hold on
plot3(x(ic),y(ic),z(ic),'b.') %,'MarkerSize',4)
plot3(x(in),y(in),z(in),'g.') %,'MarkerSize',4)
plot3(x(ip),y(ip),z(ip),'r.') %,'MarkerSize',4)
daspect([1 1 1])
set(gca,'Projection','Perspective')
set(gca,'FontSize',16)
axis tight
xlabel('z (nm)','FontSize',18)
ylabel('y (nm)','FontSize',18)
zlabel('x (nm)','FontSize',18)
%title(['Metropolis Monte Carlo step ' num2str(mcStep)])
view([126.5 23])
我的问题是我犯了这个错误
Index exceeds matrix dimensions.
Error in PlotCluster (line 34)
plot3(x(ia),y(ia),z(ia),'b.') %,'MarkerSize',4)
我不明白为什么ia会超出x数组的界限。是否将fgets
更改为load
语句?这是让它读入正确数字的唯一方法(不是49和50,这是非常奇怪的)
让我感到困惑的主要是这些行(其中数字用于对应“a”、“n”、“p”等)
它们看起来像隐含的if
语句,赋值从data
到ia
等,其中ia成为一个数组。但我不确定
如果您能帮助理解这一点,我们将不胜感激。我已经解决了这个问题,因为我没有正确更新输入。为了澄清这个问题:ia=data==0意味着“使数组与数据大小相同,并根据逻辑(data==0)是真是假填充1或0”我已经解决了这个问题,我没有正确更新输入。若要为任何遇到此问题的人澄清此问题:
ia=data==0
意味着“使数组与数据大小相同,并根据逻辑(data==0)是真是假将其填充为1或0”如果解决了您的问题,请将此作为答案发布。抱歉,这仍然是一个新问题。我会的!刚刚被告知,声誉低于100的用户在提问后8小时内无法回答自己的问题。您可以在3小时内自行回答。在此之前,请使用评论或编辑您的问题。
ia = data == 0;
in = data == 1;
ip = data == 2;