導航:首頁 > 文件處理 > matlab壓縮數組

matlab壓縮數組

發布時間:2022-04-20 13:24:30

A. matlab如何改變一維數組長度

矩陣的長度可以用函數length(x)獲得,維數可以用size(x)函數獲得 這里你可以用語句a=my_sort(a);完成你想要的功能

B. matlab中矩陣縮小一倍

我不知道Matlab裡面有沒有相關的命令

不過,我覺得你可以自己編程解決。

首先,獲得數組的大小。然後再將一半的數據重新賦值給一個新的數組。

參考代碼如下:

clc;clear;
size_1=3;%行列式的維度,如果不想輸入行列式也可自行修改
a=1:size_1^2;
%構建數組
a=reshape(a,size_1,size_1)
[x,y]=size(a);
%將數組的維度除以2後向正無窮取整
x=ceil(x/2);
y=ceil(y/2);
%取一半的數組
b=a(1:x,1:y)

其運行結果為:

a=

147
258
369


b=

14
25

C. matlab中如何將某一數組中數據進行打亂,有沒有相應的函數,謝謝,在線等。

代碼:
%這些是你的代碼
formatlong
clc
clear
N=10000;
x=ones(N,3);
y=rand(N,3);
z=ones(N,3);
s1=2*cos(2*3.14159265/11)-1;
s2=2*cos(4*3.14159265/11)-fix(2*cos(4*3.14159265/11));
s3=2*cos(6*3.14159265/11)-fix(2*cos(6*3.14159265/11))+1;
fori=1:N
x(i,1)=i*s1-fix(i*s1);
x(i,2)=i*s2-fix(i*s2);
x(i,3)=i*s3-fix(i*s3);
end
%這個是我補充的代碼
fori=1:size(x,2)
z(:,i)=x(randperm(size(x,1))',i);
end
如有用,請及時採納!

D. 如何用MATLAB進行圖像壓縮

1、首先在電腦中雙擊matlab軟體,使用語句:x=0:0.2:7*pi:創建一個一維數組,表示三維離散序列圖的在x軸上的分布范圍。

E. 關於matlab使用數組計算內存耗費太大,怎麼解決

我建議在一開始就定義數組大小,這樣可以減少內存的使用,同時加快計算速度,特別是數組較大的情況下,比如A=ones(n,1);for ii=1:n......end另外,在matlab里不推薦使用i,j作為循環變數,因為他們本身也是虛數單位。在有些情況下可能會造成混亂。

F. matlab數組

matlab數組是用D=[a b;c d]或D=[a,b;c,d]來表示。

舉個例子:

a=ones(2,2,3)

也就是說a是有三個2x2的矩陣組成的。

那麼a(:,:,1)表示第一個矩陣。以此類推。

數組
編輯

所謂數組,就是相同數據類型的元素按一定順序排列的集合,就是把有限個類型相同的變數用一個名字命名,然後用編號區分他們的變數的集合,這個名字稱為數組名,編號稱為下標。組成數組的各個變數稱為數組的分量,也稱為數組的元素,有時也稱為下標變數。數組是在程序設計中,為了處理方便, 把具有相同類型的若干變數按有序的形式組織起來的一種形式。這些按序排列的同類數據元素的集合稱為數組。

G. matlab 把一個整數拆成數組形式

x=123
x1=fix(123/100)
x2=mod(fix(123/10),10)
x3=mod(mod(123,100),10)
x=[x1,x2,x3]
fix函數用來取整,mod用來取余,聰明的你一看就明白啦

H. 關於matlab中數組的一些簡單操作

S='This Is A Test.'
s1=S(1:5)
s2=fliplr(S)
s3=S;flag=s3<='z'&s3>='a';s3(flag)=s3(flag)-'a'+'A'
s4=sum(S<='z'&S>='a')

I. 圖像壓縮 MATLAB實現 如何解壓縮一個被壓縮過的圖像 急急急

法對圖像進行壓縮,得到一組壓縮編碼,然後解碼這組編碼,得到一幅解壓縮圖像.對解碼圖像與原始圖像求差值,得到一差值圖像,然後對該差值圖像進行適當的編碼.對差值圖像的編碼與初級編碼共同構成對原始圖像的編碼.這種方法需要選擇合適的初級編碼方法與差值編碼方法,使得這兩者相結合,可以得到一種綜合性能較好的編碼方法。
其定義如圖。
%%%%%%%%%%%%%%

clear
tic
%Image1=imread('pic\cameraman.tif');
xianshi;
number=input(' input the number:');
Image1=suoxiao('pic\cameraman.tif',number);
[imagem imagen]=size(Image1);
Sr=4;Sd=8;
Rnum=(imagem/Sr)*(imagen/Sr);
Dnum=(imagem/Sd)*(imagen/Sd);
Image2=zeros(Dnum,Sr,Sr);
Image2=blkproc(Image1,[Sd/Sr,Sd/Sr],'mean(mean(x))');
%壓縮image1為原來1/2
% there are no eight tranformation for simpleness
RBlocks=zeros(Rnum,Sr,Sr);
DBlocks=zeros(Dnum,Sd,Sd);
DBlocksRece=zeros(Dnum*8,Sr,Sr);
%%取R塊,K記標號----------------------------------
for i=1:imagem/Sr
for j=1:imagen/Sr
k=(i-1)*imagen/Sr+j;
RBlocks(k,:,:)=Image1((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr);

end
end
%取R塊,K記標號----------------------------------
for i=1:imagem/Sd
for j=1:imagen/Sd
k=(i-1)*imagen/Sd+j;
m=Sr;n=Sr;
DBlocksRece(k,:,:)=Image2((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr);
DBlocksRece(k+Dnum,:,:)=DBlocksRece(k,m:-1:1,:); % 行上下翻轉===(x軸對稱)
DBlocksRece(k+2*Dnum,:,:)=DBlocksRece(k,:,n:-1:1); % 列左右翻轉 ==== y軸對稱
DBlocksRece(k+3*Dnum,:,:)=DBlocksRece(k,m:-1:1,n:-1:1); % 先行翻,再列翻 旋轉180度
DBlocksRece(k+4*Dnum,:,:)=reshape(DBlocksRece(k,:,:),Sr,Sr)'; % 關於y=-x對稱
A=reshape( DBlocksRece(k+3*Dnum,:,:),Sr,Sr)';
DBlocksRece(k+5*Dnum,:,:)=A(:,n:-1:1); % 關於y=x對稱
DBlocksRece(k+6*Dnum,:,:)=imrotate(reshape(DBlocksRece(k,:,:),Sr,Sr),90); % 逆時針旋轉90度
DBlocksRece(k+7*Dnum,:,:)=imrotate(reshape(DBlocksRece(k,:,:),Sr,Sr),270); % 逆時針旋轉270度

DBlocks(k,:,:)=Image1((i-1)*Sd+1:i*Sd,(j-1)*Sd+1:j*Sd);
end
end
RandDbest=zeros(Rnum,1)+256^3;
RandDbests=zeros(Rnum,1);
RandDbesto=zeros(Rnum,1);
RandDbestj=zeros(Rnum,1);
for i=1:Rnum
x=reshape(RBlocks(i,:,:),Sr*Sr,1);
meanx=mean(x);
for j=1:Dnum*8
y=reshape(DBlocksRece(j,:,:),Sr*Sr,1);
meany=mean(y);
s=(x-meanx)'*(y-meany)/((y-meany)'*(y-meany));%計算s
o=(meanx-s*meany);%計算o
c=(x-s*y-o)'*(x-s*y-o);%距離
if (RandDbest(i)>c)&(abs(s)<1)
RandDbest(i)=c;
RandDbests(i)=s;
RandDbesto(i)=o;
RandDbestj(i)=j;%可以找到對應變換和D塊
end
end
end
%iteration limit
toc
tic
m=8;%解碼迭代次數
e=mean(mean(Image1));
Image3=e*ones(imagem,imagen);%解碼初始圖象
for L=1:m
Image4=blkproc(Image3,[Sd/Sr,Sd/Sr],'mean(mean(x))');

for i=1:imagem/Sr
for j=1:imagen/Sr
m=Sr;n=Sr;
k=(i-1)*imagen/Sr+j;
l=RandDbestj(k);
k1=mod(l-1,Dnum)+1;%第幾個D
l1=(l-k1)/Dnum+1;%變換號
%R對應D在Image4的起始點
j1=mod(k1-1,imagen/Sd)+1;
i1=(k1-j1)/(imagen/Sd)+1;
%變換------------------------------------------------------------------------
DBlocksRece(k1,:,:)=Image4((i1-1)*Sr+1:i1*Sr,(j1-1)*Sr+1:j1*Sr);
switch l1-1
case 0
DBlocksRece(l,:,:)=Image4((i1-1)*Sr+1:i1*Sr,(j1-1)*Sr+1:j1*Sr);
case 1
DBlocksRece(l,:,:)=DBlocksRece(k1,m:-1:1,:);
case 2
DBlocksRece(l,:,:)=DBlocksRece(k1,:,n:-1:1);
case 3
DBlocksRece(l,:,:)=DBlocksRece(k1,m:-1:1,n:-1:1);
case 4
DBlocksRece(l,:,:)=reshape(DBlocksRece(k1,:,:),Sr,Sr)';
case 5
DBlocksRece(k1+3*Dnum,:,:)=DBlocksRece(k1,m:-1:1,n:-1:1);
A=reshape( DBlocksRece(k1+3*Dnum,:,:),Sr,Sr)';
DBlocksRece(l,:,:)=A(:,n:-1:1);
case 6
DBlocksRece(l,:,:)=imrotate(reshape(DBlocksRece(k1,:,:),Sr,Sr),90);
case 7
DBlocksRece(l,:,:)=imrotate(reshape(DBlocksRece(k1,:,:),Sr,Sr),270);
end
%變換結束--------------------------------------------------------------------
RBlocks(k,:,:)=RandDbests(k)*DBlocksRece(l,:,:)+RandDbesto(k);
%生成R---------------------------
Image3((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr)=reshape(RBlocks(k,:,:),Sr,Sr);%更新迭代圖象
end
end
wucha=double(Image1)-Image3;%誤差圖

Ps1(L)=20*log10(255/(sqrt(mean(mean(wucha.^2)))))
PSNR=psnr(wucha)
figure
imshow(uint8(Image3))
end
toc
figure
wucha=uint8(wucha);
imshow(wucha)
figure
imshow(uint8(Image1)),title('原圖');
save('sa.mat')
fangtu(wucha);%%%%分形主函數
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
子函數:1:
function b=suoxiao(filename,bili)
a=imread(filename);
a=double(a);
[m,n]=size(a);
i=1;
while i=m/bili
j=1;
while j=n/bili
k=mean(mean(a(bili*(i-1)+1:bili*(i-1)+bili,bili*(j-1)+1:bili*(j-1)+bili)));
b(i,j)=k;
j=j+1;
end
i=i+1;
end
%b=uint8(b);
size(b)
%imshow(b)
子函數2:
%clc
function fangtu(a)
J=a;
%計算灰度圖象的直方圖數據,a為如象數組
L=256; %灰度級
Ps = zeros(L,1); %統計直方圖結果數據
nk=zeros(L,1);
[row,col]=size(a);
n=row*col; %總像素個數
for i = 1:row
for j = 1:col
num = double(a(i,j))+1; %獲取像素點灰度級
nk(num) = nk(num)+1; %統計nk
end
end
%計算直方圖概率估計
for i=1:L
Ps(i)=nk(i)/n;
end
figure;
subplot(3,1,1);imshow(J),title('誤差圖');
subplot(3,1,2),plot(nk),title('直方圖(nk)');
subplot(3,1,3),plot(Ps),title('直方圖(Ps)');
子函數3:
function PSNR=psnr(a)
[m,n]=size(a);
a=uint8(a);
a=double(a);
imagesize=m*n;
MSE=sum(dot(a,a))/ imagesize;
PSNR=10*log10(255^2/MSE);
%%%%%%%%%%%%%%%%%%%%%%
說明:
1、因為本程序時間長,FX中先選擇圖片的大小
2、編碼與解碼
3、做誤差圖和只方圖
4:畫出每次迭代的解碼圖象

J. MATLAB數據如何存成數組

一、可以把每次計算出的矩陣A保存到一個元胞結構Data中(如下圖)

二、下次從Data中取矩陣,可以這么寫A = Data{i} ;

三、元胞里的數據是按行連接的,可以用
xlswrite('d.xlsx',Data{:})
四、按列連接的,可以用
xlswrite('d.xlsx',cat(1,x{:}))

閱讀全文

與matlab壓縮數組相關的資料

熱點內容
什麼app零粉分發視頻有收益 瀏覽:162
肯亞程序員 瀏覽:638
新科源碼 瀏覽:659
如何判斷伺服器有沒有帶寬 瀏覽:41
天正建築批量刪除命令 瀏覽:94
cad最下面的一排命令都什麼意思 瀏覽:456
pythonimportcpp 瀏覽:850
W10的系統怎麼給U盤加密 瀏覽:370
華為手機代碼編程教學入門 瀏覽:762
和彩雲沒會員怎樣解壓 瀏覽:634
androidimageview保存 瀏覽:387
新買店鋪什麼伺服器 瀏覽:883
文件夾能直接刻錄嗎 瀏覽:493
androidxmpp刪除好友 瀏覽:969
javac哪個前景好 瀏覽:428
中華英才網app為什麼不能搜索了 瀏覽:660
伺服器域名是什麼意思 瀏覽:52
Linux導出mysql命令 瀏覽:159
無詐建鄴是什麼app 瀏覽:229
python中的雙色球 瀏覽:168