-3

我在我的 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,任何帮助:( !!!

4

2 回答 2

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
于 2013-05-10T09:32:16.267 回答
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 中应该类似):

在此处输入图像描述

于 2013-05-10T14:06:50.317 回答