|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 峥途 于 2024-11-5 21:37 编辑
这次分享的是用MATLAB进行灰度图的打印(就是给了一个m个样本每个样本n个特征的X矩阵文件,打印出来原始的图像)。
我读取的图像数据库是7M的,无法上传,大家可以自己试试别的图像的矩阵特征文件
我学习的事GIthub上的一个大佬的,但是他这里有一点小小的错误,我捉摸了一下午才发现不是我没理解,是他写错了
代码如下:
- %% 灰度图显示练习2
- %% 清除
- clear;close all;clc;
- %% 读取
- load('ex3data1.mat');
- randIndex = randperm(size(X,1));
- seldata = X(randIndex(1:100),:);
- %% 可视化
- displayData(seldata);
复制代码
displayData函数:
[/b]- %% 函数部分
- function [figurePane,display_array] = displayData(X,image_width)
- %% 初始参数设置(图像大小,样本结构)
- [m,n] = size(X);
- if ~exist('image_width','var')||empty(image_width)
- image_width = round(sqrt(n));
- end
- image_height = round(n/image_width);
- %% 设置figurePane(灰度、大小)
- colormap(gray);
- figure_rows = floor(sqrt(m));
- figure_cols = ceil(sqrt(m));
- %% 初始化display_array
- pad = 1;%图像之间的间隔
- display_array = -ones(pad+(image_height+pad)*figure_rows, ...
- pad+(image_width+pad)*figure_cols);% 将原始图形初始化为纯黑色
- %% 将X的值赋给display_array
- current_image = 1;
- for row = 1:figure_rows
- for col = 1:figure_cols
- max_val = max(X(current_image,:));% 求得每行(每个变量)的最大值
- % 赋值的同时,进行了归一化处理
- display_array(pad+(image_height+pad)*(row-1)+(1:image_height), ...
- pad+(image_width+pad)*(col-1)+(1:image_width))=...
- reshape(X(current_image,:),image_height,image_width)/max_val;
- current_image = current_image+1;
- if current_image > m
- break;
- end
- end
- if current_image > m
- break;
- end
- end
- %% 绘制
- figurePane = imagesc(display_array,[-1,1]);
- title('Random handwritten digits');
- axis image off;
- % 关闭坐标轴
- drawnow; % 直译:现在就画~
复制代码
ps:这两天学习(复习)神经网络的one-VS-All算法,但是感觉初次接触这玩意,逻辑回归在这个之前学了一点,所以难度最大的、最难理解的函数部分,竟然是打印那个图片!(代码对我来说相当复杂, 捉摸了一下午算是整透了),学的时候总是觉着自己学的方法可能不好,就是扣得比较死,但是我现在不想改,想把这个吴恩达的东西都学完了,然后学完MATLAB去学对应的python代码,希望最终结果是好的!
|
|