本文共 2190 字,大约阅读时间需要 7 分钟。
data = imread('fig.jpg');imshow(data);[min_val, max_val] = minmax(data(:));disp(max_val);data = data / 2;max_val = max(data(:));imshow(data); data = imread('fig.jpg'); 使用 imread 函数读取名为 fig.jpg 的图像。注意文件名不含路径,fig.jpg 即为文件扩展名。
imshow(data);
用 imshow 函数显示矩阵 data 中存储的图像。如果不希望 MATLAB 列出所有像元信息,可以在命令末尾添加 ;。例如:
imshow(data;); % 不显示信息
[min_val, max_val] = minmax(data(:));
data(:) 将矩阵 data 转换为向量,使所有数值参与运算。minmax 函数返回最小值和最大值。
fig,而不是 fig.jpg。@ 运算符。reshape 函数。imwrite 存储和写取图像。imwrite(data, 'fig.jpg');imwrite(data, 'fig.tif');% 查看帮助文档help imreadhelp imwrite
% 改变当前工作目录cd 'D:\tmp'% 创建向量或矩阵a = [1:5];b = [6:10];c = [11:15];d = [16:20];e = [21:25];% 垂直拼接向量data = [a; b; c; d; e]% 水平拼接向量data = [a, b, c, d, e]% 使用 `dlmwrite` 存储为 CSV 文件dlmwrite('data.csv', data)dlmwrite('data2.txt', data * 2)dlmwrite('data2.asc', data / 2)% 清空变量clear data data = readmatrix('E:\MATLAB\data.xlsx');% 计算矩阵均值mv = mean(data, 1);% 计算样本方差和标准差st = std(data);[n, m] = size(data);% 标准化数据X = (data - mv(ones(n, 1), :)) / st(ones(n, 1), :);% 计算相关系数矩阵R = corrcoef(X);% 主成分分析[u, v] = eig(R);eigv = diag(rot90(u) * rot90(v));% 计算方差贡献百分比per = 100 * eigv / sum(eigv);% 计算方差贡献累积百分比Cum = cumsum(per); Lorenz curve 的计算涉及多种 MATLAB 函数,包括 cumsum、linspace、interp1、trapz 等。
% 生成等分点t = linspace(0.01, 1, 100);% Lorenz 曲线计算Q = trapz(1.1, 0.01, t, 1.3, t);% 绘图box offax1 = axes('Position', get(gca, 'Position'));axes(ax1, 'YAxisLocation', 'left', 'XAxisLocation', 'top', ... 'Color', 'none', 'XColor', 'k', 'YColor', 'k'); * 表示普通矩阵乘法,而 .* 表示对应元素相乘。例如:a = [1 1; 1 1];a^2 % 2 2; 2 2a.*2 % 2 2; 2 2plot(a.*2);
/ : 除法,数值在前或后无区别,矩阵除法需注意维度。fspecial() : 创建预定义图像滤镜。imfilter() : 应用滤镜进行图像处理。imnoise() : 添加噪声。sqrt(double(p1).^2 + double(p2).^2); : 计算两数平方和的平方根。使用 pca() 进行多光谱转换,分割 RGB 通道:
% 读取多光谱图像img = imread('含有多个波段的图像.jpg');img = multispec2(img, 3); % 分别提取红、绿、蓝波段% 合成 RGB 图像img_rgb = cat(3, img(:,:4), img(:,:3), img(:,:2));imshow(img_rgb); 转载地址:http://vrwsz.baihongyu.com/