我一直试图解决这个问题,但至今没有任何进展。
从 Coursera 课程“使用 MATLAB 进行数据、信号和图像分析简介”中检索到以下代码。我正在尝试看看是否可以在 Octave 9.2 中运行它。但这会导致错误:
错误:contourc:X、Y 和 Z 必须是实数数字矩阵错误:从 contourc 调用,位于第 110 行第 5 列,位于第 146 行第 14 列,位于第 80 行第 18 列,位于第 19 行第 3 列的轮廓,位于分类 1
X、Y 和 cls 的类别为 double,且所有 3 个的大小均为 4x8。
阅读这篇文章:八度轮廓图轮廓函数工作正常。没有错误。但是使用代码:
function classification1()
load fisheriris
pkg load statistics
[~,~,s] = unique(species);
figure(1);
plot(meas(s==1 ,1), meas(s==1, 2), 'rx')
hold on
plot(meas(s==2 ,1), meas(s==2, 2), 'go')
plot(meas(s==3 ,1), meas(s==3, 2), 'b*')
xlabel('Feature 1');
ylabel('Feature 2');
legend('setosa', 'versicolor', 'virginica');
[X,Y] = meshgrid(4:.01:8, 2:.01:4.5);
cls = my_iris_classifier([X(:), Y(:)]);
cls = reshape(cls, size(X));
contour(X, Y, cls==1,[1,1], 'r--');
contour(X, Y, cls==2, [1, 1], 'g--');
contour(X, Y, cls==3, [1, 1], 'b--');
endfunction
function class = my_iris_classifier(feat)
class = zeros(size(feat,1),1);
for i = 1:size(feat,1);
if feat(i,1) > 6
class(i) = 3;
elseif feat(i,2) > 3
class(i) = 1;
else
class(i) = 2;
endif
endfor
endfunction
但事实并非如此。