Azzera filtri
Azzera filtri

Reshape matrix with zero value

2 visualizzazioni (ultimi 30 giorni)
Francesco
Francesco il 22 Feb 2014
Risposto: Andrei Bobrov il 22 Feb 2014
I have this variable formatted as following:
>> dist
dist =
0 7.5000 15.0000 16.7705 21.2132 16.7705 15.0000 7.5000
7.5000 0 7.5000 10.6066 16.7705 15.0000 16.7705 10.6066
15.0000 7.5000 0 7.5000 15.0000 16.7705 21.2132 16.7705
16.7705 10.6066 7.5000 0 7.5000 10.6066 16.7705 15.0000
21.2132 16.7705 15.0000 7.5000 0 7.5000 15.0000 16.7705
16.7705 15.0000 16.7705 10.6066 7.5000 0 7.5000 10.6066
15.0000 16.7705 21.2132 16.7705 15.0000 7.5000 0 7.5000
7.5000 10.6066 16.7705 15.0000 16.7705 10.6066 7.5000 0
I have just posted this question before but I'm not quite clear in the explatation. I want to obtain a 8x7 matrix because I want to eliminate all the 0 element rows by rows. How can I do this?
It should be a matrix like this:
7.5000 15.0000 16.7705 21.2132 16.7705 15.0000 7.5000
7.5000 7.5000 10.6066 16.7705 15.0000 16.7705 10.6066
15.0000 7.5000 7.5000 15.0000 16.7705 21.2132 16.7705
and so on.
Is it possible to do this thing?

Risposta accettata

Mischa Kim
Mischa Kim il 22 Feb 2014
Looks like you just want to remove the diagonal elements. Check out this answer.
  2 Commenti
Francesco
Francesco il 22 Feb 2014
Do you think that this code is good?
function Z=diagrem(X)
N=size(X);
Z=X;
if N(1)~=N(2)
error('Matrix is not square');
end
for x=1:N(1)
Z(x,x)=0;
end
for y=1:N(1)-1
Z(y,y+1)=0;
end
Z(Z==0)=[];
Z=reshape(Z,N(1)-1,N(2)-1);
The problem is that MATLAB said:
??? function Z=diagrem(dist) | Error: Function definitions are not permitted at the prompt or in scripts.
Francesco
Francesco il 22 Feb 2014
b=triu(a)
b=b(:,2:end)
c=tril(a)
c=c(:,1:end-1)
b+c
This code seemns to work fine. Do you think so?

Accedi per commentare.

Più risposte (1)

Andrei Bobrov
Andrei Bobrov il 22 Feb 2014
n = size(dist1);
out = zeros(n-[1 0]);
out(:)=dist(~eye(n));
out = out';

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by