matlab画线性回归图
时间: 2023-07-20 16:32:40 浏览: 86
要在MATLAB中画线性回归图,可以按照以下步骤进行:
1. 准备数据:首先需要准备一组x和y的数据,表示自变量和因变量。
2. 进行线性回归:使用MATLAB中的regress函数进行线性回归分析并得到回归系数。
3. 绘制散点图:使用MATLAB中的scatter函数绘制x和y的散点图。
4. 绘制回归线:使用MATLAB中的plot函数绘制回归线。
下面是一段示例代码:
```matlab
% 准备数据
x = [1, 2, 3, 4, 5];
y = [2, 4, 5, 7, 8];
% 进行线性回归
X = [ones(length(x), 1), x'];
b = regress(y', X);
% 绘制散点图
scatter(x, y)
% 绘制回归线
hold on
plot(x, X*b, 'r')
hold off
```
这段代码会绘制出一张散点图和一条红色的回归线,表示x和y之间的线性关系。
相关问题
用matlab画logistic曲线回归代码
下面是用 Matlab 画 logistic 曲线回归的示例代码:
```matlab
% 导入数据
load fisheriris
X = meas(51:end,1:2);
y = (strcmp('versicolor',species(51:end)) - 0.5) * 2;
% 添加偏置项
X = [ones(size(X,1),1) X];
% 初始化参数
theta = zeros(size(X,2),1);
% 定义 sigmoid 函数
sigmoid = @(z) 1 ./ (1 + exp(-z));
% 定义代价函数
J = @(theta) -1/length(y) * sum(y .* log(sigmoid(X*theta)) + (1-y) .* log(1-sigmoid(X*theta)));
% 定义梯度下降函数
alpha = 0.1;
num_iters = 500;
grad_desc = @(theta) theta - alpha/length(y) * X' * (sigmoid(X*theta) - y);
for iter = 1:num_iters
theta = grad_desc(theta);
end
% 绘制决策边界
plot_data(X(:,2:3), y);
hold on;
plot_x = [min(X(:,2))-2, max(X(:,2))+2];
plot_y = (-1./theta(3)).*(theta(2).*plot_x + theta(1));
plot(plot_x, plot_y);
legend('Versicolor', 'Not Versicolor', 'Decision Boundary');
% 绘制数据点
function plot_data(X, y)
pos = find(y == 1);
neg = find(y == -1);
plot(X(pos,1), X(pos,2), 'k+', 'LineWidth', 2, 'MarkerSize', 7);
plot(X(neg,1), X(neg,2), 'ko', 'MarkerFaceColor', 'y', 'MarkerSize', 7);
end
```
这段代码使用了 Fisher's Iris 数据集的前两个特征来预测是否是 Versicolor。首先将数据导入并添加偏置项,然后定义 sigmoid 函数和代价函数。使用梯度下降法训练模型,并使用训练后的参数绘制决策边界和数据点。
matlab画散点回归线
你可以使用 MATLAB 中的 scatter 和 polyfit 函数来画散点回归线。首先,使用 scatter 函数绘制散点图,然后使用 polyfit 函数拟合回归线的参数,最后使用 plot 函数绘制回归线。
下面是一个示例代码:
```matlab
% 创建示例数据
x = [1, 2, 3, 4, 5];
y = [2, 4, 5, 4, 6];
% 绘制散点图
scatter(x, y, 'filled');
hold on;
% 拟合回归线参数
coefficients = polyfit(x, y, 1);
a = coefficients(1); % 斜率
b = coefficients(2); % 截距
% 计算回归线上的点
x_fit = min(x):0.1:max(x);
y_fit = a * x_fit + b;
% 绘制回归线
plot(x_fit, y_fit);
% 添加标题和标签
title('散点回归线');
xlabel('x');ylabel('y');
% 关闭绘图模式
hold off;
```