matlab中冒號的用法
對於A(四行五列)矩陣,A(2:3,1:2:5)是什么意思?
問題補充:能解釋下為什么是一,三,五列
滿意回答
顯示A的第二行與第三行的第一、三、五列。因為矩陣后面如果是圓括號,那么都表示引用,即矩陣元素的位置,下面是例子
A =
1 2 3 4 5
4 5 6 7 8
0 1 4 7 8
0 2 5 8 7
disp(A(2:3,1:2:5)) %3個數字夾着2個冒號的意思:從num1到num3 步長num2
4 6 8
0 4 8
補充問題:能解釋下為什么是一,三,五列
MATLAB定義矩陣的一種方法是A=s:d:f,s表示起始值,d表示增量,f表示終點值,1:2:5即為1,1+2=3,3+2=5,不難理解吧,是MATLAB定義矩陣最常用的方法
請問matlab中A(k,:) 中的冒號什么意思?
A(k,:)冒號是取出第k行的數據,比如
A =
1 2
3 4
5 6
>> A(1,:)
ans =
1 2
>>
請高手指教:matlab中 循環語句中X(8,:,i)里的冒號是什么意思??
答:冒號在MATLAB里基本上兩種意思:
(1)對於矩陣,冒號表示該維度上的所有元素。
A=
1 2 3
4 5 6
7 8 9
A(1,:)表示A的第一行,所有列。
A(1,:)=[ 1 2 3 ]
(2)在循環語句中,冒號表示“從什么開始,間隔多少,到什么”
for i=0 : 2 :10
表示的是i從0開始,每次增長2,一直到10,所以循環的第一次i=0,第二次循環i=2,...第6次i為10,循環結束。相當於C語言中的for (i=0;i<=10;i=i+2)
追問
首先感謝您的回答,我也從您說的第二點考慮過。可我還是不太明白這里冒號的位置剛好是在“間隔量”的位置上。。。。是代表什么意思呢??
i 是之前已經定好的循環步數。x也是定義好的0矩陣,x=zeros(17,1,samples)
for i=2:1:samples
....
v=v(i)+(x(8,:,i)*v(i));
難道說是代表任何步長??
回答
不是的。這里的冒號是我說的第一個意思。
現在你的x是一個三維矩陣,你可以理解為x是一個長方體,長寬高分別是17,1,sample,然后每個1*1*1的小立方體里面,存放着矩陣的一個元素。見圖。
那x(8,:,i)就是取出這個長方體的長里面的第8小格,寬里面的所有小格,高里面的第i小格所對應的那些元素。而由於你的寬里面總共就只有1。所以此處不是“那些元素”而是“那個元素”,只有1個!
可想而知,如果寬的總數不是1,那么取出的將是這個長方體的一個細長條,往里延伸的,想象一下.
************************************
冒號的兩種用法其實很好區分,寫在for里面,就是第二種意義,表現為“用冒號隔開數字”。
寫在矩陣的括號里面,就是第一種意義,表現為“把冒號當數字使用,用逗號隔開數字(或冒號)”。
i=uint8(zeros(X,Y,3));MATLAB語句解析
提問者:freeciny| 懸賞分:10 | 瀏覽次數:1271次
[X,Y]=size(temp);
i=uint8(zeros(X,Y,3));
i(:,:,1)=uint8(temp);
i(:,:,2)=uint8(temp);
i(:,:,3)=uint8(temp);
滿意回答
這句看起來像是讀圖像的RGB值。
[X,Y]=size(temp); 讀temp的大小(行數和列數)
i=uint8(zeros(X,Y,3)); 構造一個三維矩陣
i(:,:,1)=uint8(temp);uint8將類型轉換為無符號8位數,即256位。與256色值一致。
i(:,:,2)=uint8(temp);
i(:,:,3)=uint8(temp);
樓上的,人家那三行是賦值操作。你初始化成0不賦值也沒用啊。
matlab中的語句2.^x中的點是什么作用?
答:
x.^2點乘表示x中的各個元素平方
x^2表示x向量乘x向量,是個矩陣
2.^x和2^x答案應該是一樣的
標明:x為數組
舉個例子:
A=[1 2 3];
B=2.^A
ans
2 4 8
不加“。”運算不成立
matlab以矩陣作為基本計算單位,因此用普通運算符號(+、-、*、/、^)連接兩個量時要注意矩陣的運算規則。如2^x,表示兩個矩陣作乘方運算就要求一個為標量,一個為方陣。而普通運算號前加了“.”就表示兩個矩陣對應的元素間進行普通運算,而不考慮矩陣的運算規則,當然兩個矩陣的尺寸要一致,如果其中一個為標量似乎就不存在這個問題
“.^”這個叫做點乘。是分別乘以矩陣里面元素的意思。這樣得出的結果也是一個矩陣