您好我有以下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
此代码应绘制图形,然后重新整形源矩阵并将其存储在单元格数组中。
代码一直运行到图表并显示图表,但之后它不会运行。它也没有显示任何错误消息。我尝试单独运行它们并且它们工作正常但它们不会一起运行。谁能告诉我为什么会这样?
编辑:我意识到这是因为返回功能而面临的问题。
答案 0 :(得分:0)
如果您的程序在最后一步冻结,请尝试预先分配您的单元格数组x
,然后再将其填入for循环中。
这里有一种方法可以通过预先分配你的单元格来重写最后一部分
x = cell(4,1);
for k=1:2:9
x{(k+1)/2} = reshape(DPts(:,k:k+1),[],2);
end