Re: [問題] Vectorization已回收
※ 引述《joeytseng (:))》之銘言:
: A = zeros(5,5);
: B = [1 3;2 3;1 2;2 5;3 4]; % 5*2的矩陣,第1行為起始的index,第2行為終止的index
: 請問要如何用向量化的方式,使
: A的第m列 在B的第m列的兩元素所代表的indices之間的值都設為1
: 也就是 A(1,1:3) = 1
: A(2,2:3) = 1
: .
: .
: .
: A(5,3:4) = 1
有一個超級複雜的方法 基本上是由 cumsum 這語法衍生出來的
clc;
clear;
A = zeros(5,5);
B = [3 5;2 3;1 2;2 5;3 5] % 5*2的矩陣,第1行為起始的index,第2行為終止的index
D1=(B(:,2)-B(:,1)+1).';
D2=cumsum(D1);
D3=[0 D2(1:end-1)-[1:length(B(:,2))-1]*5];
D4=B(:,1).';
C=zeros(1,sum(D1));
C([1 D2(1:end-1)+1])=1;
Q=cumsum( ones(1,sum(D1) ) )-1-D3(cumsum(C))+D4(cumsum(C));
A(Q)=1;
A=A.'
每個變數的意義...已經忘了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.69.72.69
推
01/23 01:26, , 1F
01/23 01:26, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章