概述
找你的贴子找了好久,刚才一直在给你写程序.写好了.
你的程序结果错误,在于维数问题,reshape在功能上也是可以的.你可以自己思考一下.
以下为自己的一个参考程序.希望你能圆满解决问题.
程序如下:(可以直接复制到M文件中运行)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear
clc
load woman%是一个256*256的矩阵,存储在矩阵X当中
whos
img=X(1:80,1:80);
%获得你80*80的矩阵,当然这个地方你自己有的话就可以免去以上步骤,直接使用你自己的矩阵
%将img分块 这个
A=mat2cell(img,ones(80/8,1)*8,ones(80/8,1)*8)
%A{i,j}中就是最初的分割好的100个8*8的矩阵
img2=ones(100,64);%此为你最后想存储数据的矩阵,也就是你的BaseVector
for i = 1 :1: 10
for j = 1 :1: 10
k=i*j%k会从1增至100
temp=ones(8,8);%定义一个临时矩阵
temp=A{i,j};%转存
c=temp(:)';%转置成行向量,按你的要求
img2(k,:)=c;%依次按行的方式存储到你的矩阵当中
end
end
whos%看一下各个变量的大小
c-img2(100,:)%做一个简单的小验证,最后一次的c为最后一行的元素,所以此处的结果全为零.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
下面是结果:(上面的k值的递增部分省去了一些)
k=
99
k =
100
Name Size Bytes Class Attributes
A 10x10 57200 cell
X 256x256 524288 double
c 1x64 512 double %中间转存的临时变量维数正确
i 1x1 8 double
img 80x80 51200 double
img2 100x64 51200 double %说明分组成功
j 1x1 8 double
k 1x1 8 double
map 255x3 6120 double
temp 8x8 512 double
ans =
Columns 1 through 29
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 30 through 58
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 59 through 64
0 0 0 0 0 0
[本帖最后由 musicboy170 于 2008-11-21 13:47 编辑]
最后
以上就是超帅唇彩为你收集整理的定义行向量matlab,急问:如何定义向量数组?的全部内容,希望文章能够帮你解决定义行向量matlab,急问:如何定义向量数组?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复