我的matlab代码中出现了一些奇怪的问题,这是我代码的一部分:
for k=1:length(box11)
num_pts1(k)=sum(length(find(box11(:,k)>0)));
size1=sum(length(find(box11(:,:)>0)));
perc1(k)=(num_pts1(k)/size1)*100;
end
plot(delta,perc1(k),'*')
然而,问题是我在我的情节中修复了perc1。所以我在图中看到一条直线。但是我希望有不同的数字给我一条曲线,因为k正在改变每个循环所以图形也应该改变.. plzzzzzzzzzzzzzzzz,任何帮助:( !!!
答案 0 :(得分:1)
你需要在循环中plot
for k=1:length(box11)
num_pts1(k)=sum(length(find(box11(:,k)>0)));
size1=sum(length(find(box11(:,:)>0)));
perc1(k)=(num_pts1(k)/size1)*100;
plot(delta,perc1(k),'*'); hold on % Note the "hold" command!
end
答案 1 :(得分:0)
如果您的box11
矩阵包含不同数量的每列> 0的元素,则代码可以正常工作。我认为问题在于您的数据,而不是您的代码。以下是带有一些虚拟数据的稍微整理的代码版本,它可以正常工作:
% Create a dummy box11 matrix
box11 = round(rand(15,58));
% Pre-allocate variables
num_pts1 = zeros(length(box11),1);
for k=1:length(box11)
num_pts1(k)=sum(length(find(box11(:,k)>0)));
end
size1=sum(length(find(box11(:,:)>0)));
perc1=(num_pts1/size1)*100;
delta = 1:length(perc1);
plot(delta,perc1,'*')
它产生以下图(在Octave中,应该在MATLAB中类似):