显示绘图后MATLAB代码未运行

时间:2017-08-02 04:33:42

标签: matlab plot

您好我有以下MATLAB代码:

clear all; close all; clc;
Data = xlsread('Bulk Metallic Glasses Master.xlsx','D2:AK180');
k = find(isnan(Data));
Data(k) = 0;
[~,E1,~] = xlsread('Bulk Metallic Glasses Master.xlsx','A2:A180');
[~,E2,~] = xlsread('Bulk Metallic Glasses Master.xlsx','B2:B180');
[~,S,~] = xlsread('Bulk Metallic Glasses Master.xlsx','C2:C180');
DPts = Data(:,[17,18,21,22,25,26,29,30,33,34]);
m = 0;
n = 0;

figure
hold on
for i=1:length(Data)
if Data(i,11)==1
    for j=1:2:10
        if (DPts(i,j+1) && DPts (i,j) == 0)
            return
        else
        plot(DPts(i,j+1),DPts(i,j),'r*')
        m = m+1;
        end
    end
elseif Data(i,11) == 0
    for u=1:2:10
        if (DPts(i,u+1) && DPts (i,u) == 0)
            return
        else
        plot(DPts(i,u+1),DPts(i,u),'b*')
        n = n+1;
        end
    end
end
end
hold off

g = 1;
for l=1:2:10
    x{g} = reshape(DPts(:,l:l+1),[],2);
    g=g+1;
end

此代码应绘制图形,然后重新整形源矩阵并将其存储在单元格数组中。

代码一直运行到图表并显示图表,但之后它不会运行。它也没有显示任何错误消息。我尝试单独运行它们并且它们工作正常但它们不会一起运行。谁能告诉我为什么会这样?

编辑:我意识到这是因为返回功能而面临的问题。

1 个答案:

答案 0 :(得分:0)

如果您的程序在最后一步冻结,请尝试预先分配您的单元格数组x,然后再将其填入for循环中。

这里有一种方法可以通过预先分配你的单元格来重写最后一部分

x = cell(4,1);
for k=1:2:9
    x{(k+1)/2} = reshape(DPts(:,k:k+1),[],2);
end